Opencv 学习笔记之——鼠标操作画出感兴趣区域
本文為原創作品,轉載請注明出處
歡迎關注我的博客:http://blog.csdn.net/hit2015spring和http://www.cnblogs.com/xujianqing/
作者:晨鳧追風
Opencv中提供一個鼠標調用的函數,SetMouseCallback()函數,它配合一個回調函數來實現鼠標操作的功能。
首先看一下SetMouseCallback的函數原型:
c++:void setMousecallback(
????????????????????????????????????????????? const string& winname,
????????????????????????????????????????????? ?MouseCallback on_Mouse,
???????????????????????????????????????????????? void*userdata=0
??????????????????????????????????????????????????)
?
下面具體介紹一下各個參數的含義:
void? setMousecallback
(
conststring& winname,???????//這個參數為你的鼠標操作的窗口名稱,
???????????????????????? //例如你指定的窗口叫“阿三”
MouseCallback on_Mouse,??//在你指定的“阿三”這個窗口里發生鼠標操作時,被調用的函數指針
void*userdata????????????//當你調用上面的函數指針時,如果你有一個參數
?????????????????????? //(例如變量“阿貓”)要給調用函數,就是這貨了
)
?
下面要介紹那個回調函數的原型:
void? on_Mouse(int event, int x, int y, int flags, void* param)?
下面介紹一下各個參數的含義:
?void on_Mouse
(
intevent,???//這個參數是CV_EVENT_*變量之一
???????????//(用來標識鼠標的各種操作。移動,左鍵按下,右鍵按下等)
intx, int y,?//鼠標指在圖像坐標系上的坐標,
?????????? //(注意一點是圖像的坐標系,不是窗口坐標系)
????intflags,??//是CV_EVENT_FLAG的組合
void*param?//用戶定義的要給回調函數的
?????????? //調用的參數(上面的“阿貓”);
);
?????Event代表的是鼠標回傳的事件號碼,每當鼠標有動作時,Event就會回傳一個整數信息到on_Mouse(),也順便回傳鼠標移動的坐標,flags代表的是拖曳事件,而鼠標事件的執行可以細分的分類為?
定義的CV_EVENT_*
#define CV_EVENT_MOUSEMOVE?????0?????????????????????????????//鼠標滑動
#define CV_EVENT_LBUTTONDOWN???1??????????????????????????//左鍵點擊
#define CV_EVENT_RBUTTONDOWN???2?????????????????????????//右鍵點擊
#define CV_EVENT_MBUTTONDOWN???3????????????????????????//中鍵點擊
#define CV_EVENT_LBUTTONUP?????4??????????????????????????????//左鍵放開
#define CV_EVENT_RBUTTONUP?????5??????????????????????????????//右鍵放開
#define CV_EVENT_MBUTTONUP?????6????????????????????????????//中鍵放開
#define CV_EVENT_LBUTTONDBLCLK?7??????????????????????//左鍵雙擊
#define CV_EVENT_RBUTTONDBLCLK?8?????????????????????//右鍵雙擊
#define CV_EVENT_MBUTTONDBLCLK?9????????????????????//中鍵雙擊
?
定義的CV_EVENT_FLAG_*
#define CV_EVENT_FLAG_LBUTTON??1?????????????????????//左鍵拖曳
#define CV_EVENT_FLAG_RBUTTON??2????????????????????//右鍵拖曳
#define CV_EVENT_FLAG_MBUTTON??4???????????????????//中鍵拖曳
#define CV_EVENT_FLAG_CTRLKEY??8????????????????????//按Ctrl不放事件
#define CV_EVENT_FLAG_SHIFTKEY?16??????????????????//按Shift不放事件
#define CV_EVENT_FLAG_ALTKEY???32???????????????????//按Alt不放事件
總結
以上是生活随笔為你收集整理的Opencv 学习笔记之——鼠标操作画出感兴趣区域的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: c语言共享内存,在爷儿俩进程间使用共享内
- 下一篇: python html压缩包,用pyth