成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

opencv python 鼠標(biāo)響應(yīng)操作

null1145 / 2402人閱讀

摘要:回調(diào)函數(shù)顯示窗口名稱鼠標(biāo)響應(yīng)處理函數(shù)鼠標(biāo)回調(diào)函數(shù),該函數(shù)在鼠標(biāo)事件發(fā)生時(shí)執(zhí)行。鼠標(biāo)事件可以是與鼠標(biāo)相關(guān)的任何內(nèi)容,如左鍵向下,左鍵向上,左鍵雙擊等。通過這個(gè)活動(dòng)和地點(diǎn),我們可以做任何我們喜歡的事情。

Mouse as a Paint-Brush

1回調(diào)函數(shù)

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

windowName:顯示窗口名稱

onMouse:鼠標(biāo)響應(yīng)處理函數(shù)

鼠標(biāo)回調(diào)函數(shù),該函數(shù)在鼠標(biāo)事件發(fā)生時(shí)執(zhí)行。 鼠標(biāo)事件可以是與鼠標(biāo)相關(guān)的任何內(nèi)容,如左鍵向下,左鍵向上,左鍵雙擊等。它為我們提供了每個(gè)鼠標(biāo)事件的坐標(biāo)(x,y)。 通過這個(gè)活動(dòng)和地點(diǎn),我們可以做任何我們喜歡的事情。

下面代碼輸出了鼠標(biāo)事件的種類
代碼

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"]
參數(shù) 含義
CV_EVENT_MOUSEMOVE 0 滑動(dòng)
EVENT_LBUTTONDOWN 1 左鍵點(diǎn)擊
EVENT_RBUTTONDOWN 2 右鍵點(diǎn)擊
EVENT_MBUTTONDOWN 3 中間點(diǎn)擊
EVENT_LBUTTONUP 4 左鍵釋放
EVENT_RBUTTONUP 5 右鍵釋放
EVENT_MBUTTONUP 6 中間釋放
EVENT_LBUTTONDBLCLK 7 左鍵雙擊
EVENT_RBUTTONDBLCLK 8 右鍵雙擊
EVENT_MBUTTONDBLCLK 9 中間雙擊
應(yīng)用一

創(chuàng)建了一個(gè)簡單的應(yīng)用程序,只要我們雙擊它就可以在圖像上繪制一個(gè)圓圈.
代碼

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()

雙擊鼠標(biāo)左鍵:

應(yīng)用二

通過拖動(dòng)鼠標(biāo)繪制矩形或圓形(取決于我們選擇的模式),就像在Paint應(yīng)用程序中一樣。 所以我們的鼠標(biāo)回調(diào)函數(shù)有兩個(gè)部分,一個(gè)用于繪制矩形,另一個(gè)用于繪制圓形.在主循環(huán)中,設(shè)置鍵"m"設(shè)置鍵盤綁定以在矩形和圓之間切換.

代碼

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()


按住鼠標(biāo)左鍵滑動(dòng)

按“m”鍵,再次按住鼠標(biāo)左鍵滑動(dòng)

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/41962.html

相關(guān)文章

  • python Opencv實(shí)現(xiàn)停車位識(shí)別思路詳解

      小編寫這篇文章的一個(gè)主要目的,主要是給大家就相關(guān)的具體內(nèi)容做出一些詳細(xì)解答,比如了解使用python的相關(guān)知識(shí),主要是涉及到python Opencv的一些相關(guān)知識(shí),比如使用python Opencv實(shí)現(xiàn)停車位識(shí)別,就具體的內(nèi)容,下面給大家詳細(xì)解答下?! ?.怎么去實(shí)現(xiàn) ?。?)第一是需要用到一個(gè)處理畫框的程序,將圖片中的有車和無車的停車位給畫出來,并且保存坐標(biāo)(如果畫錯(cuò)了,將鼠標(biāo)移至要?jiǎng)h除的...

    89542767 評論0 收藏0
  • Python Opencv中基礎(chǔ)的知識(shí)點(diǎn)

      怎么從0到1學(xué)習(xí)Python呢?Python中的知識(shí)點(diǎn),涉及到內(nèi)容主要是Python Opencv,用于人工智能,機(jī)器學(xué)習(xí)模擬相關(guān)的數(shù)據(jù),那么,里面的一些較為基礎(chǔ)的知識(shí)點(diǎn),涉及到的內(nèi)容是什么呢?下面就給大家詳細(xì)解答下?! penCV是一個(gè)流行的開源計(jì)算機(jī)視覺庫,可用于不同的編程語言,例如Python、C++和JavaScript。它提供了一套豐富的工具來處理和分析圖像和視頻,讓你可以從調(diào)整單...

    89542767 評論0 收藏0

發(fā)表評論

0條評論

最新活動(dòng)
閱讀需要支付1元查看
<