Opencv实现画笔功能
本文实例为大家分享了Opencv实现画笔功能的具体代码,供大家参考,具体内容如下
#include#include usingnamespacestd; usingnamespacecv; Rectg_rectangle; boolg_bDrawing=false; RNGg_rng(12345); Pointg_nCurrPoint; intg_nThick=0,g_nBlue=255,g_nGreen=255,g_nRed=0; /*注意:不能在毁掉函数中写入未初始化的矩阵类,所以需要用时,需要写一个标志位,然后再在while(1)循环内使用*/ voidonMouse(intevent,intx,inty,intflag,void*param) { Mat&img=*(cv::Mat*)param; switch(event) { //移动鼠标的时候 caseCV_EVENT_MOUSEMOVE: { g_nCurrPoint=Point(x,y); } break; //点击鼠标左键时 caseCV_EVENT_LBUTTONDOWN: { g_bDrawing=true; g_nCurrPoint=Point(x,y); } break; //松开鼠标左键时 caseCV_EVENT_LBUTTONUP: { g_bDrawing=false; } break; } } intmain() { MatsrcImage(600,800,CV_8UC3); MattempImage; srcImage.copyTo(tempImage); srcImage=Scalar::all(0); namedWindow("【鼠标事件窗口】",0); setMouseCallback("【鼠标事件窗口】",onMouse,(void*)&srcImage); namedWindow("【滚动条窗口】",0); createTrackbar("thick","【滚动条窗口】",&g_nThick,100,0); createTrackbar("Blue","【滚动条窗口】",&g_nBlue,255,0); createTrackbar("Green","【滚动条窗口】",&g_nGreen,255,0); createTrackbar("Red","【滚动条窗口】",&g_nRed,255,0); charkey; while(1) { if(g_bDrawing) { circle(srcImage,g_nCurrPoint,0,Scalar(g_nBlue,g_nGreen,g_nRed),g_nThick+1); } imshow("【鼠标事件窗口】",srcImage); key=waitKey(1); if(key==27) break; if(key=='1') srcImage=Scalar::all(0); /*DrawRectangle(srcImage,g_rectangle); imshow(WINDOW_NAME,srcImage); if(waitKey(10)==27) break;*/ } return0; }
按1是清除画面
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。