首页 > 解决方案 > opencv鼠标回调没有被触发

问题描述

看看这个函数:

def showImage(im):
    def printColor(event, x, y, flag, params):
        if event == cv2.EVENT_LBUTTONDOWN:
            print(im[x,y])
            sys.exit(1)

    tag = "image"
    cv2.setMouseCallback(tag, printColor)
    cv2.imshow(tag, im)
    while True:
        if 'q' == chr(cv2.waitKey() & 255):
            cv2.destroyAllWindows()
            break

它应该在单击时显示图像并在鼠标位置打印像素。但由于某种原因,回调没有被触发。我怎样才能让这个代码工作?

标签: pythonopencvcallbackcv2

解决方案


为了setMouseCallback工作,您需要先创建窗口对象。

这可以通过imshow在设置鼠标回调之前调用来完成,或者通过使用cv2.namedWindow()创建它


推荐阅读