利用OpenCV制作一个画画软件

配置就不多说了,本博客有详细教程。

查看源代码
打印 帮助
01 #include "stdafx.h"
02 #include <highgui.h>
03  
04 #pragma comment(lib,"opencv_world300.lib")//加载lib库,不然提示找不到函数
05  
06 usingnamespace cv;
07  
08 constchar *pstrWindowsMouseDrawTitle = "绘图";
09  
10 // 鼠标消息的回调函数
11 voidon_mouse(intevent, intx, inty, intflags, void* param)
12 {
13     staticbool s_bMouseLButtonDown = false;
14     staticCvPoint s_cvPrePoint = cvPoint(0, 0);
15     switch(event)
16     {
17     caseCV_EVENT_LBUTTONDOWN:
18         s_bMouseLButtonDown = true;
19         s_cvPrePoint = cvPoint(x, y);
20         break;
21  
22     case CV_EVENT_LBUTTONUP:
23         s_bMouseLButtonDown = false;
24         break;
25  
26     caseCV_EVENT_MOUSEMOVE:
27         if(s_bMouseLButtonDown)
28         {
29             CvPoint cvCurrPoint = cvPoint(x, y);
30             cvLine((IplImage*)param, s_cvPrePoint, cvCurrPoint, CV_RGB(0, 0, 20), 3);
31             s_cvPrePoint = cvCurrPoint;
32             cvShowImage(pstrWindowsMouseDrawTitle, (IplImage*)param);
33         }
34         break;
35     }
36 }
37  
38 intmain()
39 {   
40     constint MAX_WIDTH = 500, MAX_HEIGHT = 400;
41     constchar *pstrSaveImageName = "MouseDraw.jpg";
42  
43     IplImage *pSrcImage =  cvCreateImage(cvSize(MAX_WIDTH, MAX_HEIGHT), IPL_DEPTH_8U, 3);
44     cvSet(pSrcImage, CV_RGB(255, 255, 255)); //可以用cvSet()将图像填充成白色
45     cvNamedWindow(pstrWindowsMouseDrawTitle, CV_WINDOW_AUTOSIZE);
46     cvShowImage(pstrWindowsMouseDrawTitle, pSrcImage);
47     //设置鼠标函数地址
48     cvSetMouseCallback(pstrWindowsMouseDrawTitle, on_mouse, (void*)pSrcImage);
49     intc = 0;
50     do{
51         c = cvWaitKey(0);
52         switch((char)c)
53         {
54         case'r':
55             cvSet(pSrcImage, CV_RGB(255, 255, 255));
56             cvShowImage(pstrWindowsMouseDrawTitle, pSrcImage);
57             break;
58  
59         case's':
60             cvSaveImage(pstrSaveImageName, pSrcImage);
61             break;
62         }
63     }while(c > 0 && c != 27);
64     //销毁窗口释放资源
65     cvDestroyWindow(pstrWindowsMouseDrawTitle);
66     cvReleaseImage(&pSrcImage);
67     return0;
68 }

IT十万为什么 » 利用OpenCV制作一个画画软件

你可能感兴趣的:(利用OpenCV制作一个画画软件)