OpenCV_用鼠标在窗口画方形
2011-09-30 15:54
260 查看
View Code
void my_mouse_callback(int event,int x,int y,int flags,void* param); CvRect box; bool drawing_box=false; // a little subroutine to draw a box on to an image void draw_box(IplImage* img,CvRect rect) { cvRectangle(img,cvPoint(box.x,box.y),cvPoint(box.x+box.width,box.y+box.height),cvScalar(0xff,0x00)); } int main(int argc,char** argv) { box=cvRect(-1,-1,0,0); IplImage* image =cvCreateImage(cvSize(200,200),IPL_DEPTH_8U,3); cvZero(image); IplImage* temp =cvCloneImage(image); cvNamedWindow("Box example"); cvNamedWindow("image"); cvSetMouseCallback("Box example",my_mouse_callback,(void*) image); while(1){ cvCopyImage(image,temp); /* if(drawing_box) draw_box(image,box); cvShowImage("image",image);*/ if(drawing_box) draw_box(temp,box); cvShowImage("Box example",temp); if(cvWaitKey(15)==27) break; } cvReleaseImage(&image); cvReleaseImage(&temp); cvDestroyWindow("Box example"); cvDestroyWindow("image"); return 0; } //event 指定鼠标事件类型 //int x y 为事件发生时鼠标位置的x,y坐标值。 //第四个参数flags 制定了事件在事件发生时的不同状态 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(drawing_box) { box.width=x-box.x; box.height=y-box.y; } } break; case CV_EVENT_LBUTTONDOWN: { drawing_box=true; box=cvRect(x,y,0,0); } break; case CV_EVENT_LBUTTONUP: { drawing_box=false; if(box.width<0) { box.x=box.x+box.width; box.width*=-1; } if(box.height<0) { box.y+=box.height; box.height*=-1; } draw_box(image,box); } break; } }
相关文章推荐
- opencv用鼠标在窗口中画方形的程序
- Opencv 用鼠标在窗口中画方形的程序实现_第四章书中源码摘写
- opencv用鼠标在窗口中画方形的程序
- openCV 用鼠标在窗口中画方形
- opencv用鼠标在窗口中画方形的程序
- OPENCV中例4-1用鼠标在窗口中画方形的程序
- 用鼠标在窗口中画方形的程序------基于OpenCV+VS
- Java OpenCV开发——使用JavaCV在窗口显示图像,并监听鼠标点击事件
- 用鼠标在窗口中画方形的程序
- Opencv学习记录之鼠标窗口响应
- OpenCV学习笔记-用鼠标在窗口中画矩形
- 基于opencv用鼠标在窗口中画矩形和线段的程序
- linux 下调用opencv接口函数实现鼠标在窗口画方框操作
- opencv窗口鼠标绘图
- opencv--用鼠标动态改变显示图像窗口大小
- OpenCV鼠标控制窗口大小(使用1.0vison)
- 利用OpenCV鼠标控制窗口大小
- 用鼠标在窗口中画方形
- opencv显示大图--利用鼠标在固定窗口内显示大图
- opencv-鼠标在窗口中画矩形