本文实例为大家分享了OpenCV鼠标绘制截取矩形区域图像的具体代码,供大家参考,具体内容如下在opencv中利用鼠标绘制矩形,代码如下:#include
if( event == CV_EVENT_LBUTTONDOWN ){cvCopy(dst,src);sprintf(temp,"(%d,%d)",x,y);pre_pt = cvPoint(x,y);cvPutText(src,temp, pre_pt, &font, cvScalar(0,0, 0, 255));cvCircle( src, pre_pt, 3,cvScalar(255,0,0,0) ,CV_FILLED, CV_AA, 0 );cvShowImage( "src", src );cvCopy(src,dst);}else if( event == CV_EVENT_MOUSEMOVE && !(flags & CV_EVENT_FLAG_LBUTTON)){cvCopy(dst,src);sprintf(temp,"(%d,%d)",x,y);cur_pt = cvPoint(x,y);cvPutText(src,temp, cur_pt, &font, cvScalar(0,0, 0, 255));cvShowImage( "src", src );}else if( event == CV_EVENT_MOUSEMOVE && (flags & CV_EVENT_FLAG_LBUTTON)){cvCopy(dst,src);sprintf(temp,"(%d,%d)",x,y);cur_pt = cvPoint(x,y);cvPutText(src,temp, cur_pt, &font, cvScalar(0,0, 0, 255));cvRectangle(src, pre_pt, cur_pt, cvScalar(0,255,0,0), 1, 8, 0 );cvShowImage( "src", src );}else if( event == CV_EVENT_LBUTTONUP ){sprintf(temp,"(%d,%d)",x,y);cur_pt = cvPoint(x,y);cvPutText(src,temp, cur_pt, &font, cvScalar(0,0, 0, 255));cvCircle( src, cur_pt, 3,cvScalar(255,0,0,0) ,CV_FILLED, CV_AA, 0 );cvRectangle( src, pre_pt, cur_pt, cvScalar(0,255,0,0), 1, 8, 0 );cvShowImage( "src", src );cvCopy(src,dst);}}int main(){src=cvLoadImage("lena.jpg",1);dst=cvCloneImage(src);cvNamedWindow("src",1);cvSetMouseCallback( "src", on_mouse, 0 );
cvShowImage("src",src);cvWaitKey(0);cvDestroyAllWindows();cvReleaseImage(&src);cvReleaseImage(&dst);return 0;
在opencv中利用鼠标绘制矩形并截取该矩形区域的图像
测试代码如下:
#include
if( event == CV_EVENT_LBUTTONDOWN ){cvCopy(org,img);sprintf(temp,"(%d,%d)",x,y);pre_pt = cvPoint(x,y);cvPutText(img,temp, pre_pt, &font, cvScalar(0,0, 0, 255));cvCircle( img, pre_pt, 3,cvScalar(255,0,0,0) ,CV_FILLED, CV_AA, 0 );cvShowImage( "img", img );cvCopy(img,tmp);}else if( event == CV_EVENT_MOUSEMOVE && !(flags & CV_EVENT_FLAG_LBUTTON)){cvCopy(tmp,img);sprintf(temp,"(%d,%d)",x,y);cur_pt = cvPoint(x,y);cvPutText(img,temp, cur_pt, &font, cvScalar(0,0, 0, 255));cvShowImage( "img", img );}else if( event == CV_EVENT_MOUSEMOVE && (flags & CV_EVENT_FLAG_LBUTTON)){cvCopy(tmp,img);sprintf(temp,"(%d,%d)",x,y);cur_pt = cvPoint(x,y);cvPutText(img,temp, cur_pt, &font, cvScalar(0,0, 0, 255));cvRectangle(img, pre_pt, cur_pt, cvScalar(0,255,0,0), 1, 8, 0 );cvShowImage( "img", img );}else if( event == CV_EVENT_LBUTTONUP ){cvCopy(tmp,img);sprintf(temp,"(%d,%d)",x,y);cur_pt = cvPoint(x,y);cvPutText(img,temp, cur_pt, &font, cvScalar(0,0, 0, 255));cvCircle( img, cur_pt, 3,cvScalar(255,0,0,0) ,CV_FILLED, CV_AA, 0 );cvRectangle( img, pre_pt, cur_pt, cvScalar(0,255,0,0), 1, 8, 0 );cvShowImage( "img", img );cvCopy(img,tmp);int width=abs(pre_pt.x-cur_pt.x);int height=abs(pre_pt.y-cur_pt.y);if(width==0 || height==0){cvDestroyWindow("dst");return;}dst=cvCreateImage(cvSize(width,height),org->depth,org->nChannels);CvRect rect;if(pre_pt.x
cvShowImage("img",img);cvWaitKey(0);cvDestroyAllWindows();cvReleaseImage(&org);cvReleaseImage(&img);cvReleaseImage(&tmp);cvReleaseImage(&dst);return 0;}以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。
您可能感兴趣的文章:详解Python+opencv裁剪/截取图片的几种方式C#使用opencv截取旋转矩形区域图像的实现示例python+openCV对视频进行截取的实现Python OpenCV视频截取并保存实现代码python用opencv批量截取图像指定区域的方法python3+opencv3识别图片中的物体并截取的方法python使用opencv按一定间隔截取视频帧opencv python截取圆形区域的实现
