OpenCV图片卡住

时间:2019-04-17 19:28:55

标签: python opencv queue

我正在尝试使用opencv制作一个小程序。基本上,它应该向用户显示图片,然后关闭它(或者最好让它打开,但这是另一个问题,因为我现在不让代码打开时如何执行代码),然后询问用户,他刚看到。为此,我使用imshow和waitKey。一切正常,但是按下键后图片无法关闭。卡住了我认为是因为在该命令之后还要执行另一个代码?

我认为是因为在该命令之后还要执行另一个代码?

导入cv2

oriimg = cv2.imread('path')
img = cv2.resize(oriimg,(360,480))
solutionimg = "Answer"
cv2.imshow('Test', img)
cv2.waitKey(0)
input("What can you see here?")


if input==solutionimg:
    cv2.destroyAllWindows()
    print("Right!")
else:
    cv2.destroyAllWindows()
    print("Wrong")

1 个答案:

答案 0 :(得分:1)

waitKey不会关闭窗口,它会在指定时间内停止程序。这也是显示图像的必要步骤。
为了您的目的,您可以使用cv2.waitKey(1)。这将显示图像,然后提示您输入而不必先按任何键。图片窗口不会关闭。

如果要在提示前关闭图像,则可以使用cv2.destroyWindow([window_name])关闭特定窗口。
 在您的情况下为cv2.destroyWindow('Test')

文档:destroyWindowwaitkey

查看代码还有2个问题:
cv2.imread('path')“路径”需要替换为图像路径。这是相对于脚本而言的,因此,如果图像位于同一文件夹中,则“ [image_name] .jpg”(或.png等)就足够了,但是完整路径始终有效。
您需要将input("What can you see here?")的结果存储在变量中。请参见示例代码中的实现。

适用于我的示例代码:

    import cv2

    img = cv2.imread('image.jpg')
    solutionimg = "Answer"
    cv2.imshow('Test', img)
    cv2.waitKey(0)
    test = input("What can you see here?")

    if test == solutionimg:
            cv2.destroyAllWindows()
            print("Right!")
    else:
            cv2.destroyAllWindows()
            print("Wrong")

此代码读取并显示图像。当您按下一个键时,它会提示您进行输入。在终端中单击以输入答案。按Enter后,图像窗口关闭,并显示对/错。