opencv的鼠標事件格式比較固定:調用setMouseCallback函數
setMouseCallback(窗口名, 鼠標事件響應函數, 傳入響應函數的參數)
響應函數格式如下:
functionName(event, x, y, flag, param)
其中event 和 flag 是鼠標事件標誌,詳見官方文檔
(x,y)爲鼠標在窗口中點擊的位置,與數組座標同參考系
param是傳入參數
import cv2 as cv
def tirgger_left_clicked(event, x, y, flags, param):
if event == cv.EVENT_LBUTTONDOWN:
print('coordinate is :', (x, y))
print('In BGR is:' ,param[0][y][x])
print('In HSV is:' ,param[1][y][x] ,'\n')
if __name__ == '__main__':
img = cv.imread('test01.jpg')
img_hsv = cv.cvtColor(img, cv.COLOR_BGR2HSV)
cv.namedWindow('image', cv.WINDOW_AUTOSIZE)
flag = True
while(flag):
cv.imshow('image', img)
cv.setMouseCallback('image', tirgger_left_clicked, [img ,img_hsv])
flag = (cv.waitKey(20) & 0xFF != 27)
cv.destroyWindow('image')
運行結果: