博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
OpenCV_用鼠标在窗口画方形
阅读量:5268 次
发布时间:2019-06-14

本文共 2329 字,大约阅读时间需要 7 分钟。

 

ContractedBlock.gif
ExpandedBlockStart.gif
View Code
1 void my_mouse_callback(int event,int x,int y,int flags,void* param);  2  3 CvRect box;  4  5 bool drawing_box=false;  6  7 // a little subroutine to draw a box on to an image  8 void draw_box(IplImage* img,CvRect rect)  9 {
10 cvRectangle(img,cvPoint(box.x,box.y),cvPoint(box.x+box.width,box.y+box.height),cvScalar(0xff,0x00)); 11 } 12 13 14 int main(int argc,char** argv) 15 { 16 box=cvRect(-1,-1,0,0); 17 18 IplImage* image =cvCreateImage(cvSize(200,200),IPL_DEPTH_8U,3); 19 20 cvZero(image); 21 22 IplImage* temp =cvCloneImage(image); 23 24 cvNamedWindow("Box example"); 25 cvNamedWindow("image"); 26 cvSetMouseCallback("Box example",my_mouse_callback,(void*) image); 27 28 while(1){
29 cvCopyImage(image,temp); 30 /* if(drawing_box) draw_box(image,box); 31 cvShowImage("image",image);*/ 32 if(drawing_box) draw_box(temp,box); 33 cvShowImage("Box example",temp); 34 35 if(cvWaitKey(15)==27) break; 36 } 37 38 cvReleaseImage(&image); 39 cvReleaseImage(&temp); 40 cvDestroyWindow("Box example"); 41 cvDestroyWindow("image"); 42 43 return 0; 44 45 46 } 47 //event 指定鼠标事件类型 48 //int x y 为事件发生时鼠标位置的x,y坐标值。 49 //第四个参数flags 制定了事件在事件发生时的不同状态 50 void my_mouse_callback(int event,int x,int y,int flags,void* param) 51 {
52 IplImage* image= (IplImage*) param; 53 switch(event) 54 {
55 case CV_EVENT_MOUSEMOVE: 56 {
57 if(drawing_box) 58 {
59 box.width=x-box.x; 60 box.height=y-box.y; 61 } 62 } 63 break; 64 case CV_EVENT_LBUTTONDOWN: 65 {
66 drawing_box=true; 67 box=cvRect(x,y,0,0); 68 } 69 break; 70 case CV_EVENT_LBUTTONUP: 71 {
72 drawing_box=false; 73 if(box.width<0) 74 {
75 box.x=box.x+box.width; 76 box.width*=-1; 77 78 } 79 if(box.height<0) 80 {
81 box.y+=box.height; 82 box.height*=-1; 83 } 84 draw_box(image,box); 85 } 86 break; 87 } 88 }

r_rect.jpg

转载于:https://www.cnblogs.com/slysky/archive/2011/09/30/2196628.html

你可能感兴趣的文章
熟悉项目需求,要知道产品增删修改了哪些内容,才会更快更准确的在该项目入手。...
查看>>
JavaScript 变量
查看>>
java实用类
查看>>
20170531
查看>>
图片预加载之比onload更快的获取图片尺寸
查看>>
车机/盒子新福音 NCS8828:HDMI转YPbPr转换芯片
查看>>
BS 相关的一些近似公式
查看>>
软件测试7大原则
查看>>
mysql 主从库同步
查看>>
SQL中的关联更新和关联删除
查看>>
AOP的相关概念
查看>>
Web 跨域请求
查看>>
Problem(1)----Eclipse hangs on copy/cut for JavaScript files
查看>>
CSS拾遗(二)
查看>>
smarty模板自定义变量
查看>>
研究称90%的癌症由非健康生活习惯导致
查看>>
命令行启动Win7系统操作部分功能
查看>>
ABP入门系列(6)——定义导航菜单
查看>>
PHP CURL CURLOPT参数说明(curl_setopt)
查看>>
排序sort (一)
查看>>