網(wǎng)站建設(shè)5000費(fèi)用運(yùn)營(yíng)網(wǎng)站
鼠標(biāo)事件類型 OpenCV 支持多種鼠標(biāo)事件類型,常見(jiàn)的包括:
cv2.EVENT_LBUTTONDOWN:左鍵按下
cv2.EVENT_RBUTTONDOWN:右鍵按下
cv2.EVENT_MBUTTONDOWN:中鍵按下
cv2.EVENT_LBUTTONUP:左鍵釋放
cv2.EVENT_RBUTTONUP:右鍵釋放
cv2.EVENT_MBUTTONUP:中鍵釋放
cv2.EVENT_MOUSEMOVE:鼠標(biāo)移動(dòng)
cv2.EVENT_LBUTTONDBLCLK:左鍵雙擊
cv2.EVENT_RBUTTONDBLCLK:右鍵雙擊
cv2.EVENT_MBUTTONDBLCLK:中鍵雙擊
代碼
實(shí)現(xiàn)點(diǎn)擊鼠標(biāo)左鍵不放移動(dòng)可以畫(huà)圖,點(diǎn)擊c鍵盤(pán)去掉恢復(fù)
import cv2
import numpy as np# 定義全局變量
drawing = False
ix, iy = -1, -1# 定義鼠標(biāo)回調(diào)函數(shù)
def mouse_callback(event, x, y, flags, param):global drawing, ix, iyif event == cv2.EVENT_LBUTTONDOWN:drawing = Trueix, iy = x, yelif event == cv2.EVENT_MOUSEMOVE:if drawing:cv2.line(img, (ix, iy), (x, y), (0, 123, 255), 2) # 使用 BGR 顏色格式,紅色為 (0, 0, 255)ix, iy = x, yelif event == cv2.EVENT_LBUTTONUP:drawing = Falsecv2.line(img, (ix, iy), (x, y), (0, 133, 255), 2) # 使用 BGR 顏色格式,紅色為 (0, 0, 255)# 創(chuàng)建一個(gè)純白底圖
img = np.ones((512, 512, 3), np.uint8) * 255 # 創(chuàng)建一個(gè)純白圖像# 創(chuàng)建一個(gè)窗口
cv2.namedWindow('Image')# 設(shè)置鼠標(biāo)回調(diào)函數(shù)
cv2.setMouseCallback('Image', mouse_callback)# 顯示圖像并等待用戶交互
while True:cv2.imshow('Image', img)key = cv2.waitKey(1) & 0xFFif key == 27: # 按下 ESC 鍵退出breakelif key == ord('c'): # 'c'鍵清除畫(huà)布img = np.ones((480, 640, 3), dtype=np.uint8) * 255# 保存圖像
cv2.imwrite('output_image.jpg', img)cv2.destroyAllWindows()