天天看點

OpenCV中的滑鼠操作

OpenCV中的滑鼠操作

在OpenCV中滑鼠有4種類型的操作,分别是:按下(Down),放開(Up),移動(Move),輕按兩下(DoubleClick),滑鼠在視窗中操作的時候會發生其中一個或幾個操作。

而這些操作都是由OpenCV内部定義的回調函數:

void (*CvMouseCallback )(int event, int x, int y, int flags, void* param)完成的。

1、event:其中event表示事件,回調過程中發生的是滑鼠按下或放開、移動等操作。

2、x,y:表示滑鼠此刻的在視窗中的位置資訊。

3、flags:表示拖拽、組合鍵等标志,與event搭配使用

4、param:表示傳入或傳出的資料

隻要将操作方法定義成CvMouseCallback即可實作任何形式的滑鼠操作

Event的可選項及含義
功能
CV_EVENT_MOUSEMOVE 滑動
CV_EVENT_LBUTTONDOWN 1 左鍵點選
CV_EVENT_RBUTTONDOWN 2 右鍵點選
CV_EVENT_MBUTTONDOWN 3 中鍵點選
CV_EVENT_LBUTTONUP 4 左鍵放開
CV_EVENT_RBUTTONUP 5 右鍵放開
CV_EVENT_MBUTTONUP  6 中鍵放開
CV_EVENT_LBUTTONDBLCLK 7 左鍵輕按兩下
CV_EVENT_RBUTTONDBLCLK 8 右鍵輕按兩下
CV_EVENT_MBUTTONDBLCLK 9 中鍵輕按兩下
Flags的可選項及含義
功能
CV_EVENT_FLAG_LBUTTON 1  左鍵拖曳
CV_EVENT_FLAG_RBUTTON 2 右鍵拖曳
CV_EVENT_FLAG_MBUTTON  4 中鍵拖曳
CV_EVENT_FLAG_CTRLKEY  8~15 Ctrl不放事件
CV_EVENT_FLAG_SHIFTKEY 16~31 Shift不放事件
CV_EVENT_FLAG_ALTKEY 32~39 Alt不放事件

然後使用cvSetMouseCallback()進入滑鼠操作的入口方法進行回調,但需要傳入一個handler,也就是事件驅動的子程式名稱,Handler必須是CvMouseCallback函數指針類型.

cvSetMouseCallback("視窗名稱",自行定義子程式名稱,自行定義子程式的傳入傳出參數);