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("視窗名稱",自行定義子程式名稱,自行定義子程式的傳入傳出參數);