国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

opencv python 鼠標響應操作

null1145 / 2389人閱讀

摘要:回調函數顯示窗口名稱鼠標響應處理函數鼠標回調函數,該函數在鼠標事件發生時執行。鼠標事件可以是與鼠標相關的任何內容,如左鍵向下,左鍵向上,左鍵雙擊等。通過這個活動和地點,我們可以做任何我們喜歡的事情。

Mouse as a Paint-Brush

1回調函數

cv2.setMouseCallback(windowName, onMouse [, param])

windowName:顯示窗口名稱

onMouse:鼠標響應處理函數

鼠標回調函數,該函數在鼠標事件發生時執行。 鼠標事件可以是與鼠標相關的任何內容,如左鍵向下,左鍵向上,左鍵雙擊等。它為我們提供了每個鼠標事件的坐標(x,y)。 通過這個活動和地點,我們可以做任何我們喜歡的事情。

下面代碼輸出了鼠標事件的種類
代碼

import cv2 
events = [i for i in dir(cv2) if "EVENT" in i]
print( events )

輸出

["EVENT_FLAG_ALTKEY", "EVENT_FLAG_CTRLKEY", "EVENT_FLAG_LBUTTON", "EVENT_FLAG_MBUTTON", "EVENT_FLAG_RBUTTON", "EVENT_FLAG_SHIFTKEY", "EVENT_LBUTTONDBLCLK", "EVENT_LBUTTONDOWN", "EVENT_LBUTTONUP", "EVENT_MBUTTONDBLCLK", "EVENT_MBUTTONDOWN", "EVENT_MBUTTONUP", "EVENT_MOUSEHWHEEL", "EVENT_MOUSEMOVE", "EVENT_MOUSEWHEEL", "EVENT_RBUTTONDBLCLK", "EVENT_RBUTTONDOWN", "EVENT_RBUTTONUP"]
參數 含義
CV_EVENT_MOUSEMOVE 0 滑動
EVENT_LBUTTONDOWN 1 左鍵點擊
EVENT_RBUTTONDOWN 2 右鍵點擊
EVENT_MBUTTONDOWN 3 中間點擊
EVENT_LBUTTONUP 4 左鍵釋放
EVENT_RBUTTONUP 5 右鍵釋放
EVENT_MBUTTONUP 6 中間釋放
EVENT_LBUTTONDBLCLK 7 左鍵雙擊
EVENT_RBUTTONDBLCLK 8 右鍵雙擊
EVENT_MBUTTONDBLCLK 9 中間雙擊
應用一

創建了一個簡單的應用程序,只要我們雙擊它就可以在圖像上繪制一個圓圈.
代碼

import numpy as np
import cv2

# mouse callback function
def draw_circle(event,x,y,flags,param):
    if event == cv2.EVENT_LBUTTONDBLCLK:
        cv2.circle(img,(x,y),100,(255,0,0),-1)

# Create a black image, a window and bind the function to window
img = np.zeros((512,512,3), np.uint8)
cv2.namedWindow("image")
cv2.setMouseCallback("image",draw_circle)

while(1):
    cv2.imshow("image",img)
    if cv2.waitKey(20) & 0xFF == 27:
        break
cv2.destroyAllWindows()

雙擊鼠標左鍵:

應用二

通過拖動鼠標繪制矩形或圓形(取決于我們選擇的模式),就像在Paint應用程序中一樣。 所以我們的鼠標回調函數有兩個部分,一個用于繪制矩形,另一個用于繪制圓形.在主循環中,設置鍵"m"設置鍵盤綁定以在矩形和圓之間切換.

代碼

import numpy as np
import cv2

drawing = False # true if mouse is pressed
mode = True # if True, draw rectangle. Press "m" to toggle to curve
ix,iy = -1,-1

# mouse callback function
def draw_circle(event,x,y,flags,param):
    global ix,iy,drawing,mode

    if event == cv2.EVENT_LBUTTONDOWN:
        drawing = True
        ix,iy = x,y

    elif event == cv2.EVENT_MOUSEMOVE:
        if drawing == True:
            if mode == True:
                cv2.rectangle(img,(ix,iy),(x,y),(0,255,0),-1)
            else:
                cv2.circle(img,(x,y),5,(0,0,255),-1)

    elif event == cv2.EVENT_LBUTTONUP:
        drawing = False
        if mode == True:
            cv2.rectangle(img,(ix,iy),(x,y),(0,255,0),-1)
        else:
            cv2.circle(img,(x,y),5,(0,0,255),-1)

img = np.zeros((512,512,3), np.uint8)
cv2.namedWindow("image")
cv2.setMouseCallback("image",draw_circle)

while(1):
    cv2.imshow("image",img)
    k = cv2.waitKey(1) & 0xFF
    if k == ord("m"):
        mode = not mode
    elif k == 27:
        break

cv2.destroyAllWindows()


按住鼠標左鍵滑動

按“m”鍵,再次按住鼠標左鍵滑動

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/41962.html

相關文章

  • python Opencv實現停車位識別思路詳解

      小編寫這篇文章的一個主要目的,主要是給大家就相關的具體內容做出一些詳細解答,比如了解使用python的相關知識,主要是涉及到python Opencv的一些相關知識,比如使用python Opencv實現停車位識別,就具體的內容,下面給大家詳細解答下。  1.怎么去實現  (1)第一是需要用到一個處理畫框的程序,將圖片中的有車和無車的停車位給畫出來,并且保存坐標(如果畫錯了,將鼠標移至要刪除的...

    89542767 評論0 收藏0
  • Python Opencv中基礎的知識點

      怎么從0到1學習Python呢?Python中的知識點,涉及到內容主要是Python Opencv,用于人工智能,機器學習模擬相關的數據,那么,里面的一些較為基礎的知識點,涉及到的內容是什么呢?下面就給大家詳細解答下。  OpenCV是一個流行的開源計算機視覺庫,可用于不同的編程語言,例如Python、C++和JavaScript。它提供了一套豐富的工具來處理和分析圖像和視頻,讓你可以從調整單...

    89542767 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<