编辑的学习opencv上的例子例题

来源:互联网 发布:qq三国转职js技能 编辑:程序博客网 时间:2024/06/15 06:52
在运行的时候是将鼠标中键按住,用两个点画出一个矩形。
#include<cv.h>#include<highgui.h>#include<stdio.h>void my_mouse_callback(int event, int x,int y, int flag,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));}int main(int argc, char **argv[]){box = CvRect(-1, -1, 0, 0);IplImage *img = cvCreateImage(cvSize(200, 200), IPL_DEPTH_8U, 3);cvZero(img);IplImage*temp = cvCloneImage(img);cvNamedWindow("box example");cvSetMouseCallback("box example",my_mouse_callback, (void*)img);while (1){cvCopy(img, temp);if (drawing_box) draw_box(temp, box);cvShowImage("box example", temp);if (cvWaitKey(15) == 27) break;}cvReleaseImage(&img);cvReleaseImage(&temp);cvDestroyWindow("box example");}void my_mouse_callback(int event, int x, int y, int flag, void *param){IplImage* img = (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_MBUTTONDOWN:{ 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(img,box);}break;}}

0 0
原创粉丝点击