未触发 opencv 鼠标回调

opencv mouse callback isn't being triggered

看看这个函数:

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

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

要使 setMouseCallback 正常工作,您需要先创建 window 对象。

这可以通过在设置鼠标回调之前调用 imshow 或使用 cv2.namedWindow()

创建它来完成