首页 > 解决方案 > OpenCV 图片卡住了

问题描述

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

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

导入简历2

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")

标签: pythonopencvqueue

解决方案


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")

此代码读取并显示图像。当您按下某个键时,它会提示您使用输入。点击终端输入答案。按下回车后,图像窗口关闭并显示正确/错误。


推荐阅读