学习OpenCV第四章第五题答案
2014-08-21 15:59
176 查看
本答案只实现了画矩形和点击右键实现橡皮擦功能,其他画椭圆画元的功能和画矩形一样,自己实现吧!
// learningOpenCV_4_5.cpp : 定义控制台应用程序的入口点。 // CvRect box; bool t=0,z=0; CvPoint pt[2]; void my_mouse_callback(int event,int x,int y,int flags,void *prarm); void draw_box(IplImage* image,CvRect box); void draw_line(IplImage* image,CvPoint* p); void erase(IplImage* image ,CvRect box); int _tmain(int argc, _TCHAR* argv[]) { IplImage* image=cvCreateImage(cvSize(500,500),IPL_DEPTH_8U,3); IplImage* copyimg=cvCreateImage(cvSize(500,500),IPL_DEPTH_8U,3); cvZero(image); cvNamedWindow("show"); cvSetMouseCallback("show",my_mouse_callback,(void*)image); while(1) { cvCopy(image,copyimg); if(t==1) draw_box(copyimg,box); if(z==1) erase(copyimg ,box); cvShowImage("show",copyimg); char c=cvWaitKey(33); if(c==27) break; } cvShowImage("show",image); cvWaitKey(0); return 0; } void my_mouse_callback(int event,int x,int y,int flags,void *prarm) { IplImage* image=(IplImage*)prarm; switch(event) { case CV_EVENT_MOUSEMOVE: { if(t==1) { box.width=x-box.x; box.height=y-box.y; } };break; case CV_EVENT_LBUTTONDOWN: { t=true; box=cvRect(x,y,0,0); };break; case CV_EVENT_LBUTTONUP: { t=false; draw_box(image,box); };break; case CV_EVENT_RBUTTONDOWN: { z=1; box=cvRect(0,0,0,0); box=cvRect(x,y,x+20,y+20); };break; case CV_EVENT_RBUTTONUP: { z=0; erase(image ,box); };break; } } void draw_box(IplImage* image,CvRect box) { cvRectangle(image,cvPoint(box.x,box.y),cvPoint(box.x+box.width,box.y+box.height),CV_RGB(255,0,0)); cvShowImage("show",image); } void draw_line(IplImage* image,CvPoint* p) { cvLine(image,(*p),*(p+1),CV_RGB(0,0,0),20); cvShowImage("show",image); } void erase(IplImage* image ,CvRect box) { for(int i=box.y;i<box.height;i++) { for(int j=box.x;j<box.width;j++) { char *ptr=(char*)(image->imageData+i*image->widthStep)+j*3; *ptr=0; *(ptr+1)=0; *(ptr+2)=0; } } }
相关文章推荐
- 学习OpenCV第四章第一题答案
- 学习OpenCV第四章第四题答案
- 学习openCV第四章答案
- 学习opencv 习题答案-第三章
- opencv学习(六)书本《学习Opencv》(中文版)第四章的作业答案第二题(opencv3.0.0+VS2012+win7)
- opencv学习(五)书本《学习Opencv》(中文版)第四章的作业答案第一题(opencv3.0.0+VS2012+win7)
- 学习OpenCV第四章第二题答案
- 学习opencv课后答案第三章
- 学习opencv第三章答案
- 学习opencv 第二章 习题5答案
- 学习opencv 习题答案-第四章
- 学习opencv 4.1答案
- OpenCV学习——图像信息读取和倒置
- sizeof ( )——在学习openCV中 create matrix 时发现的问题
- OpenCV学习之直方图统计应用【转】
- OpenCV学习——边缘检测
- OpenCV学习——矩阵基本操作
- C++学习之2--10.09题目答案
- OpenCV学习——基本数据结构
- 关于嵌入式的和我同档次人学习方向提问的答案