摘要:回調(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 | 中間雙擊 |
創(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
小編寫這篇文章的一個(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除的...
怎么從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)整單...
閱讀 3523·2023-04-25 15:52
閱讀 590·2021-11-19 09:40
閱讀 2618·2021-09-26 09:47
閱讀 1037·2021-09-22 15:17
閱讀 3562·2021-08-13 13:25
閱讀 2247·2019-08-30 15:56
閱讀 3476·2019-08-30 13:56
閱讀 2113·2019-08-30 11:27