计算机视觉 OpenCV (5)
2019-08-10 本文已影响21人
zidea
图
opencv.jpeg
我们鼠标或者触控与 opencv 图像进行交互会触发事件,我们输出一下 EVENT 看一看 opencv 为我们提供哪些事件供我们调用。
events = [i for i in dir(cv2) if 'EVENT' in i]
print(events)
输出事件,看看 opencv 提供我们如此多事件,我们今天只关注 EVENT_LBUTTONDOWN 和 EVENT_RBUTTONDOWN 这两个鼠标左键和右键事件。
['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']
我们通过事件可以得到左键点击事件的位置信息,通过位置信息来显示鼠标左键点击事件的位置。
def click_event(event, x, y, flags, param):
if event == cv2.EVENT_LBUTTONDOWN:
print(x,',',y)
font = cv2.FONT_HERSHEY_SIMPLEX
strXY = str(x) + "," + str(y)
cv2.putText(img, strXY, (x,y), font, 1, (0,255,255),2)
cv2.imshow('image',img)
通过 setMouseCallback 以回调函数形式来实现获取鼠标事件。
img = np.zeros((512,512,3),np.uint8)
cv2.imshow('image',img)
cv2.setMouseCallback('image',click_event)
cv2.waitKey(0)
cv2.destroyAllWindows()
图
右键单击事件与左键单击类似没有什么不同地方,所以大家可以试一试,而且今天内容没有什么需要解释的。
if event == cv2.EVENT_RBUTTONDOWN:
blue = img[y,x, 0]
green = img[y,x, 1]
red = img[y,x, 2]
font = cv2.FONT_HERSHEY_SIMPLEX
strBGR = str(blue) + "," + str(green) +","+ str(red)
cv2.putText(img, strBGR, (x,y), font, .5, (255,255,0),2)
cv2.imshow('image',img)
图
opencv.jpeg