日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

OpenCV中图像窗口的鼠标事件

發布時間:2025/4/16 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 OpenCV中图像窗口的鼠标事件 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

首先需要綁定圖像窗口于一個鼠標事件處理函數

void cv::setMouseCallback (const String & winname, MouseCallback onMouse, void * userdata = 0 )
  • winname 是這個窗口的名字字符串
  • onMouse 是鼠標處理函數
  • userdata
    是需要傳遞到鼠標處理函數中的用戶自定義的數據指針(可以不用,默認為空)
  • 鼠標處理函數的原型

    typedef void(* cv::MouseCallback) (int event, int x, int y, int flags, void *userdata)
  • event 是事件類型,有下面幾類事件
    • 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標志來判斷。

  • userdata 這個參數就是自定義的數據指針,也就是setMouseCallback中最后一個參數。可以不用。
  • 《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀

    總結

    以上是生活随笔為你收集整理的OpenCV中图像窗口的鼠标事件的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。