生活随笔
收集整理的這篇文章主要介紹了
鼠标操作
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1、setMouseCallback函數
用于創建鼠標響應函數
調用形式:
C++:?void?setMouseCallback(const string&?winname, MouseCallback?onMouse, void*?userdata=0?)
const string&?winname:窗口名稱
MouseCallback?onMouse:鼠標響應調用的函數
void*?userdata=0:一般選擇默認0
2、opencv例子:
程序如下,已經附上說明:
[cpp]?view plaincopy
#include?<opencv2/core/core.hpp>?? #include?<opencv2/highgui/highgui.hpp>?? #include?<stdio.h>?? ?? using?namespace?cv;?? ?? cv::Mat?org,dst,img,tmp;?? void?on_mouse(int?event,int?x,int?y,int?flags,void?*ustc)?? {?? ????static?Point?pre_pt?=?(-1,-1);?? ????static?Point?cur_pt?=?(-1,-1);?? ????char?temp[16];?? ????if?(event?==?CV_EVENT_LBUTTONDOWN)?? ????{?? ????????org.copyTo(img);?? ????????sprintf(temp,"(%d,%d)",x,y);?? ????????pre_pt?=?Point(x,y);?? ????????putText(img,temp,pre_pt,FONT_HERSHEY_SIMPLEX,0.5,Scalar(0,0,0,255),1,8);?? ????????circle(img,pre_pt,2,Scalar(255,0,0,0),CV_FILLED,CV_AA,0);?? ????????imshow("img",img);?? ????}?? ????else?if?(event?==?CV_EVENT_MOUSEMOVE?&&?!(flags?&?CV_EVENT_FLAG_LBUTTON))?? ????{?? ????????img.copyTo(tmp);?? ????????sprintf(temp,"(%d,%d)",x,y);?? ????????cur_pt?=?Point(x,y);?? ????????putText(tmp,temp,cur_pt,FONT_HERSHEY_SIMPLEX,0.5,Scalar(0,0,0,255));?? ????????imshow("img",tmp);?? ????}?? ????else?if?(event?==?CV_EVENT_MOUSEMOVE?&&?(flags?&?CV_EVENT_FLAG_LBUTTON))?? ????{?? ????????img.copyTo(tmp);?? ????????sprintf(temp,"(%d,%d)",x,y);?? ????????cur_pt?=?Point(x,y);?? ????????putText(tmp,temp,cur_pt,FONT_HERSHEY_SIMPLEX,0.5,Scalar(0,0,0,255));?? ????????rectangle(tmp,pre_pt,cur_pt,Scalar(0,255,0,0),1,8,0);?? ????????imshow("img",tmp);?? ????}?? ????else?if?(event?==?CV_EVENT_LBUTTONUP)?? ????{?? ????????org.copyTo(img);?? ????????sprintf(temp,"(%d,%d)",x,y);?? ????????cur_pt?=?Point(x,y);?? ????????putText(img,temp,cur_pt,FONT_HERSHEY_SIMPLEX,0.5,Scalar(0,0,0,255));?? ????????circle(img,pre_pt,2,Scalar(255,0,0,0),CV_FILLED,CV_AA,0);?? ????????rectangle(img,pre_pt,cur_pt,Scalar(0,255,0,0),1,8,0);?? ????????imshow("img",img);?? ????????img.copyTo(tmp);?? ?????????? ????????int?width?=?abs(pre_pt.x?-?cur_pt.x);?? ????????int?height?=?abs(pre_pt.y?-?cur_pt.y);?? ????????if?(width?==?0?||?height?==?0)?? ????????{?? ????????????printf("width?==?0?||?height?==?0");?? ????????????return;?? ????????}?? ????????dst?=?org(Rect(min(cur_pt.x,pre_pt.x),min(cur_pt.y,pre_pt.y),width,height));?? ????????namedWindow("dst");?? ????????imshow("dst",dst);?? ????????waitKey(0);?? ????}?? }?? void?main()?? {?? ????org?=?imread("1.jpg");?? ????org.copyTo(img);?? ????org.copyTo(tmp);?? ????namedWindow("img");?? ????setMouseCallback("img",on_mouse,0);?? ????imshow("img",img);?? ????cv::waitKey(0);?? } ?
總結
以上是生活随笔為你收集整理的鼠标操作的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。