《学习OpenCV》练习题第四章第三题a
来源:互联网 发布:linux beam.smp 编辑:程序博客网 时间:2024/06/07 15:44
#include <highgui.h>#include <cv.h>#include "opencv_libs.h"#pragma comment (lib,"opencv_calib3d231d.lib")#pragma comment (lib,"opencv_contrib231d.lib")#pragma comment (lib,"opencv_core231d.lib")#pragma comment (lib,"opencv_features2d231d.lib")#pragma comment (lib,"opencv_flann231d.lib")#pragma comment (lib,"opencv_gpu231d.lib")#pragma comment (lib,"opencv_haartraining_engined.lib")#pragma comment (lib,"opencv_highgui231d.lib")#pragma comment (lib,"opencv_imgproc231d.lib")#pragma comment (lib,"opencv_legacy231d.lib")#pragma comment (lib,"opencv_ml231d.lib")#pragma comment (lib,"opencv_objdetect231d.lib")#pragma comment (lib,"opencv_ts231d.lib")#pragma comment (lib,"opencv_video231d.lib")/* *《学习OpenCV》第四章第三题a * 完成时间:22:17 3/30 星期六 2013 *//* 矩形框 */CvRect rect;bool draw = false; // 标记是否在画IplImage* img;IplImage * temp;IplImage * original;void draw_rect(IplImage* img, CvRect rect){cvRectangle( img, cvPoint( rect.x, rect.y ),cvPoint( rect.x + rect.width, rect.y + rect.height),cvScalar( 0x00, 0x00, 0xff) );printf("draw\n");}// 鼠标回调函数void my_mouse_callback( int event, int x, int y, int flags, void* param){IplImage* image = (IplImage*) param;switch( event ){case CV_EVENT_MOUSEMOVE:{if(draw){rect.width = x - rect.x;rect.height = y - rect.y;}}break;case CV_EVENT_LBUTTONDOWN:{draw = true;rect = cvRect( x, y, 0, 0 );}break;case CV_EVENT_LBUTTONUP:{draw = false;if(rect.width < 0){rect.x += rect.width;rect.width *= -1;}if(rect.height < 0){rect.y += rect.height;rect.height *= -1;}// drawdraw_rect(image, rect);}break;// 在右键按下时清除case CV_EVENT_RBUTTONDOWN:cvCopyImage(original, img);printf("clear.\n");break;}}int main(){img = cvLoadImage( "lena.bmp", 1 );rect = cvRect( -1, -1, 0, 0);// 副本 temp = cvCloneImage( img );original = cvCloneImage(img);cvNamedWindow("draw rect");cvSetMouseCallback("draw rect", my_mouse_callback, (void*)img);while(1){cvCopyImage(img, temp);if(draw){draw_rect( temp , rect );}cvShowImage( "draw rect", temp);if(cvWaitKey(15) == 27)break;}cvReleaseImage(&img);cvReleaseImage(&temp);cvReleaseImage(&original);cvDestroyAllWindows();return 0;}
运行结果:
- 《学习OpenCV》练习题第四章第三题a
- 《学习OpenCV》练习题第三章第四题
- 《学习OpenCV》练习题第三章第四题
- 《学习OpenCV》练习题第四章第三题b
- 《学习OpenCV》练习题第四章第一题a
- 《学习OpenCV》练习题第四章第五题a
- 《学习OpenCV》练习题第四章第四题
- 《学习OpenCV》练习题第三章第八题a
- 《学习OpenCV》练习题第三章第三题
- 《学习OpenCV》练习题第三章第三题
- 《学习OpenCV》练习题第二章第四题
- 《学习OpenCV》练习题第四章第二题
- 《学习OpenCV》练习题第四章第六题
- 学习opencv第四章第三题A答案
- 《学习OpenCV》练习题第二章第三题
- 《学习OpenCV》练习题第三章第一题
- 《学习OpenCV》练习题第三章第二题
- 《学习OpenCV》练习题第三章第五题
- 开源软件下载地址
- Apple Sample代码摘抄-plist文件加载
- Poj 1708 Game (BFS)
- 该怎么样去选方向?(软件开发还是软件测试?)
- ZOJ 1109 Language of FatMouse
- 《学习OpenCV》练习题第四章第三题a
- webkit真正可以编译的过程
- 给ActiveX控件授权,加数字签名
- 开源项目之Android RibbonMenu(导航菜单)
- stl中的heap使用
- Joomla 3.x_component如何打包安装和卸载
- 我的敏捷思想成长之旅
- 十天学会DIV+CSS第十天 div+css网页标准布局实例教程
- 《学习OpenCV》练习题第四章第三题b