【问题标题】:OpenCV Picture stuckOpenCV 图片卡住了
【发布时间】:2019-09-08 02:59:16
【问题描述】:

我正在尝试用 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")

【问题讨论】:

    标签: python opencv queue


    【解决方案1】:

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

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

    文档:destroyWindow、waitkey

    查看您的代码还有 2 个问题:
    cv2.imread('path') '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")
    

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

    【讨论】:

    • 谢谢,这可行,但在等待提示时,图片窗口仍然冻结。我该如何解决这个问题?它让我想起了我在多线程(进程、队列等)方面遇到的一些错误......但我不确定
    • 我不太明白。你尝试过什么实现方式?
    • 整个代码在这里的主帖中。我刚刚编辑了“cv2.waitKey(1)”。但是在图片窗口打开并出现提示后,窗口冻结,直到我在提示中写了一些东西,窗口被 cv2.destroyAllWindows() 关闭
    • 在你提到的保持窗口打开的问题中,这就是为什么我首先建议cv2.waitkey(1)。如果你想让窗口自动关闭,你必须在waitkey后面加上cv2.destroyWindow('Test')。另外,cv2.waitkey(1) 在这种情况下也不好,因为窗口会在 1 毫秒后关闭。因此,要么将其设置为 0,从而通过按键关闭窗口,要么将其设置为 x 毫秒。例如 cv2.waitkey(2000) 等待 2 秒。
    • 问题是它在 1 毫秒后没有关闭。它卡住了。这可能是因为在 waitKey 通用之后有代码要执行?我不确定,这就是我在这里问的。另外,我只想在有人在提示中键入内容时才关闭图片。这怎么可能?
    猜你喜欢
    • 2017-09-25
    • 2021-03-19
    • 2023-03-07
    • 1970-01-01
    • 2012-06-23
    • 2021-10-08
    • 2016-11-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多