opencv鎖定鼠標(biāo)定位的實(shí)現(xiàn)
控制鼠標(biāo)
opencv允許我們對(duì)窗口的鼠標(biāo)動(dòng)作做出響應(yīng):
setMouseCallback(winname,callback,userdata)
1.winname是窗口的名字
2.callback是回調(diào)函數(shù)
3.userdata是給回調(diào)函數(shù)的參數(shù)
callback(event,x,y,flags,userdata)回調(diào)函數(shù)必須包含這5個(gè)參數(shù):
1.event:事件(鼠標(biāo)拖動(dòng),左鍵,右鍵等)
2.x,y:點(diǎn)擊鼠標(biāo)的坐標(biāo)點(diǎn)
3.flags:主要用于組合鍵
4.userdata:上面的setMouseCallback的userdata
鼠標(biāo)事件:
- EVENT_MOUSEMOVE 0 鼠標(biāo)移動(dòng)
- EVENT_LBUTTONDOWN 1 按下鼠標(biāo)左鍵
- EVENT_RBUTTONDOWN 2 按下鼠標(biāo)右鍵
- EVENT_MBUTTONDOWN 3 按下鼠標(biāo)中鍵
- EVENT_LBUTTONUP 4 左鍵釋放
- EVENT_RBUTTONUP 5 右鍵釋放
- EVENT_MBUTTONUP 6 中鍵釋放
- EVENT_LBUTTONDBLCLK 7 左鍵雙擊
- EVENT_RBUTTONDBLCLK 8 右鍵雙擊
- EVENT_MBUTTONDBLCLK 9 中鍵雙擊
- EVENT_MOUSEWHEEL 10 鼠標(biāo)滾輪上下滾動(dòng)
- EVENT_MOUSEHWHEEL 11 鼠標(biāo)左右滾動(dòng)
flags:
- EVENT_FLAG_LBUTTON 1 按下左鍵
- EVENT_FLAG_RBUTTON 2 按下右鍵
- EVENT_FLAG_MBUTTON 4 按下右鍵
- EVENT_FLAG_CRTLKEY 8 按下ctrl鍵
- EVENT_FLAG_SHIFTKEY 16 按下shift鍵
- EVENT_FLAG_ALTKEY 32 按下alt鍵
導(dǎo)入相應(yīng)的庫(kù)
import cv2 import numpy as np
創(chuàng)建方法
創(chuàng)建并輸出回調(diào)函數(shù)的五個(gè)參數(shù)
def mouse_callback(event,x,y,flags,userdata):
print(event,x,y,flags,userdata)
創(chuàng)建窗口
cv2.namedWindow('mouse',cv2.WINDOW_NORMAL)
cv2.resizeWindow('mouse',640,360)
設(shè)置鼠標(biāo)回調(diào)函數(shù)
cv2.setMouseCallback('mouse',mouse_callback,'123')設(shè)置生成的窗口背景
img = np.zeros((360,640,3),np.uint8)
綁定鍵盤(pán)監(jiān)聽(tīng)事件
while True:
cv2.imshow('mouse',img)
key = cv2.waitKey(1)
if key & 0XFF == ord('q'):
break
釋放窗口
cv2.destroyAllWindows()
效果展示
當(dāng)鼠標(biāo)出現(xiàn)在窗口中時(shí),即開(kāi)始跟蹤鼠標(biāo)的位置,并完成位置的實(shí)時(shí)打?。?/p>

完整學(xué)習(xí)代碼
import cv2
import numpy as np
def mouse_callback(event,x,y,flags,userdata):
print(event,x,y,flags,userdata)
cv2.namedWindow('mouse',cv2.WINDOW_NORMAL)
cv2.resizeWindow('mouse',640,360)
#設(shè)置鼠標(biāo)回調(diào)函數(shù)
cv2.setMouseCallback('mouse',mouse_callback,'123')
#顯示窗口和背景
#生成全黑的圖片
img = np.zeros((360,640,3),np.uint8)
while True:
cv2.imshow('mouse',img)
key = cv2.waitKey(1)
if key & 0XFF == ord('q'):
break
cv2.destroyAllWindows()到此這篇關(guān)于opencv鎖定鼠標(biāo)定位的實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)opencv鎖定鼠標(biāo)定位內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- python3.6+opencv3.4實(shí)現(xiàn)鼠標(biāo)交互查看圖片像素
- python opencv鼠標(biāo)畫(huà)矩形框之cv2.rectangle()函數(shù)
- Python OpenCV實(shí)現(xiàn)鼠標(biāo)畫(huà)框效果
- opencv+python實(shí)現(xiàn)鼠標(biāo)點(diǎn)擊圖像,輸出該點(diǎn)的RGB和HSV值
- OpenCV實(shí)現(xiàn)鼠標(biāo)框選并顯示框選區(qū)域
- opencv3/python 鼠標(biāo)響應(yīng)操作詳解
- OpenCV鼠標(biāo)繪制矩形和截取矩形區(qū)域圖像
- OpenCV實(shí)現(xiàn)鼠標(biāo)在圖像上框選單目標(biāo)和多目標(biāo)
- Opencv使用鼠標(biāo)任意形狀的摳圖
相關(guān)文章
在Python的Flask框架中構(gòu)建Web表單的教程
Flask框架中自帶一個(gè)Form表單類(lèi),通過(guò)它的子類(lèi)來(lái)實(shí)現(xiàn)表單將相當(dāng)愜意,這里就為大家?guī)?lái)Python的Flask框架中構(gòu)建Web表單的教程,需要的朋友可以參考下2016-06-06
使用Python編寫(xiě)一個(gè)桌面便簽應(yīng)用
ChatGPT的編程能力也不差,本文將一步一步提出要求,讓ChatGPT根據(jù)我們的要求,編寫(xiě)出一個(gè)可用的,可打包運(yùn)行的桌面便簽,感興趣的可以了解一下2023-06-06
Python使用DPKT實(shí)現(xiàn)分析數(shù)據(jù)包
dpkt項(xiàng)目是一個(gè)Python模塊,主要用于對(duì)網(wǎng)絡(luò)數(shù)據(jù)包進(jìn)行解析和操作,z這篇文章主要為大家介紹了python如何利用DPKT實(shí)現(xiàn)分析數(shù)據(jù)包,有需要的可以參考下2023-10-10
使用Python實(shí)現(xiàn)WebSocket服務(wù)器與客戶(hù)端通信功能
WebSocket?是一種基于?TCP?協(xié)議的通信協(xié)議,能夠在客戶(hù)端與服務(wù)器之間進(jìn)行全雙工(雙向)通信,相比傳統(tǒng)的?HTTP?協(xié)議,WebSocket?可以實(shí)現(xiàn)實(shí)時(shí)數(shù)據(jù)的傳輸,我通過(guò)?Python?實(shí)現(xiàn)一個(gè)簡(jiǎn)單的?WebSocket?服務(wù)器,并使其與客戶(hù)端進(jìn)行通信,需要的朋友可以參考下2024-12-12
Python實(shí)現(xiàn)檢索指定網(wǎng)段內(nèi)所有的數(shù)據(jù)庫(kù)服務(wù)器
這篇文章主要為大家詳細(xì)介紹了如何使用Python實(shí)現(xiàn)檢索指定網(wǎng)段內(nèi)所有的數(shù)據(jù)庫(kù)服務(wù)器,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解下2025-02-02
使用Python進(jìn)行數(shù)據(jù)清洗和預(yù)處理的實(shí)現(xiàn)代碼
Python作為數(shù)據(jù)科學(xué)領(lǐng)域的熱門(mén)編程語(yǔ)言,提供了豐富的庫(kù)和工具來(lái)處理和清洗數(shù)據(jù),本文將介紹如何使用Python進(jìn)行數(shù)據(jù)清洗和預(yù)處理,并提供相應(yīng)的代碼示例,需要的朋友可以參考下2024-05-05
Python自定義進(jìn)程池實(shí)例分析【生產(chǎn)者、消費(fèi)者模型問(wèn)題】
這篇文章主要介紹了Python自定義進(jìn)程池,結(jié)合實(shí)例分析了Python使用自定義進(jìn)程池實(shí)現(xiàn)的生產(chǎn)者、消費(fèi)者模型問(wèn)題,需要的朋友可以參考下2016-09-09
數(shù)據(jù)清洗之如何用一行Python代碼去掉文本中的各種符號(hào)
我們?cè)谔幚砦谋镜臅r(shí)候往往需要對(duì)標(biāo)點(diǎn)符號(hào)進(jìn)行處理,下面這篇文章主要給大家介紹了關(guān)于數(shù)據(jù)清洗之如何用一行Python代碼去掉文本中的各種符號(hào)的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-11-11

