OpenCV中图像窗口的鼠标事件
首先需要綁定圖像窗口于一個鼠標事件處理函數
void cv::setMouseCallback (const String & winname, MouseCallback onMouse, void * userdata = 0 )是需要傳遞到鼠標處理函數中的用戶自定義的數據指針(可以不用,默認為空)
鼠標處理函數的原型
typedef void(* cv::MouseCallback) (int event, int x, int y, int flags, void *userdata)-
EVENT_MOUSEMOVE
Python: cv.EVENT_MOUSEMOVE
indicates that the mouse pointer has moved over the window. (鼠標移動事件,不論是否按下鍵,不論是哪個鍵) -
EVENT_LBUTTONDOWN
Python: cv.EVENT_LBUTTONDOWN
indicates that the left mouse button is pressed. (左鍵按下事件,只發送在按下時刻) -
EVENT_RBUTTONDOWN
Python: cv.EVENT_RBUTTONDOWN
indicates that the right mouse button is pressed. (右鍵按下事件,只發送在按下時刻) -
EVENT_MBUTTONDOWN
Python: cv.EVENT_MBUTTONDOWN
indicates that the middle mouse button is pressed. (中鍵按下事件,只發送在按下時刻) -
EVENT_LBUTTONUP
Python: cv.EVENT_LBUTTONUP
indicates that left mouse button is released. (左鍵釋放) -
EVENT_RBUTTONUP
Python: cv.EVENT_RBUTTONUP
indicates that right mouse button is released. (右鍵釋放) -
EVENT_MBUTTONUP
Python: cv.EVENT_MBUTTONUP
indicates that middle mouse button is released. (中鍵釋放) -
EVENT_LBUTTONDBLCLK
Python: cv.EVENT_LBUTTONDBLCLK
indicates that left mouse button is double clicked. (左鍵雙擊) -
EVENT_RBUTTONDBLCLK
Python: cv.EVENT_RBUTTONDBLCLK
indicates that right mouse button is double clicked. (右鍵雙擊) -
EVENT_MBUTTONDBLCLK
Python: cv.EVENT_MBUTTONDBLCLK
indicates that middle mouse button is double clicked. (中鍵雙擊) -
EVENT_MOUSEWHEEL
Python: cv.EVENT_MOUSEWHEEL
positive and negative values mean forward and backward scrolling, respectively. (垂直滾輪事件) -
EVENT_MOUSEHWHEEL
Python: cv.EVENT_MOUSEHWHEEL
positive and negative values mean right and left scrolling, respectively. (橫向滾輪)
x, y就是發生鼠標事件時,鼠標指針所在的位置,以左上角為(0,0), 往右為x正方向, 往下為y正方向
flags 是鼠標狀態標志,有以下值
-
EVENT_FLAG_LBUTTON
Python: cv.EVENT_FLAG_LBUTTON
indicates that the left mouse button is down. (目前鼠標的左鍵已經按下) -
EVENT_FLAG_RBUTTON
Python: cv.EVENT_FLAG_RBUTTON
indicates that the right mouse button is down. (目前鼠標的右鍵已經按下) -
EVENT_FLAG_MBUTTON
Python: cv.EVENT_FLAG_MBUTTON
indicates that the middle mouse button is down. (目前鼠標的中鍵已經按下) -
EVENT_FLAG_CTRLKEY
Python: cv.EVENT_FLAG_CTRLKEY
indicates that CTRL Key is pressed. (目前Windows的Ctrl鍵已經按下) -
EVENT_FLAG_SHIFTKEY
Python: cv.EVENT_FLAG_SHIFTKEY
indicates that SHIFT Key is pressed. (目前Windows的Shift鍵已經按下) -
EVENT_FLAG_ALTKEY
Python: cv.EVENT_FLAG_ALTKEY
indicates that ALT Key is pressed. (目前Windows的ALT鍵已經按下)
一般event 和 flag結合使用,就可以判斷更多的鼠標操作。 比如按住左鍵拖動,可以用
按下的時刻,通過EVENT_LBUTTONUP來判斷
拖動的過程中 通過 EVENT_MOUSEMOVE 事件 和 EVENT_FLAG_LBUTTON標志來判斷。
總結
以上是生活随笔為你收集整理的OpenCV中图像窗口的鼠标事件的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: OpenCV中的waitkey()详解
- 下一篇: 两个坐标系进行了缩放平移后的变换关系