程序员深度学习数字图像处理与计算机视觉(python)

计算机视觉 OpenCV (5)

2019-08-10  本文已影响21人  zidea

我们鼠标或者触控与 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
上一篇 下一篇

猜你喜欢

热点阅读