OpenCV学习笔记-用鼠标在窗口中画矩形

网友投稿 567 2022-12-02

OpenCV学习笔记-用鼠标在窗口中画矩形

OpenCV学习笔记-用鼠标在窗口中画矩形

程序如下:

// drawBox.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include "cv.h"#include "highgui.h"void my_mouse_callback( int event,int x,int y,int flags,void *param);CvRect box;bool drawing_box=false;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,0x00) /*red*/ );}int _tmain(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"); cvSetMouseCallback( "Box Example", my_mouse_callback, (void *)image ); while(1) { cvCopyImage(image,temp); if(drawing_box)draw_box(temp,box); cvShowImage("Box Example",temp); if(cvWaitKey(15)==27) break; } cvReleaseImage(&image); cvReleaseImage(&temp); cvDestroyWindow("Box Example");}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.width; box.width*=-1; } if(box.height<0) { box.y+=box.height; box.height*=-1; } draw_box(image,box); } break; }}

运行结果如图:

参考文献:

学习OpenCV(中文版)于仕祺 刘瑞祯 译  清华大学出版社  pp:114-117.

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:我的2019
下一篇:Redis缓存问题
相关文章

 发表评论

暂时没有评论,来抢沙发吧~