python - 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")
解决方案
waitKey
不关闭窗口,它会在指定的时间内停止程序。这也是显示图像的必要步骤。
出于您的目的,您可以使用cv2.waitKey(1)
. 这将显示图像,然后提示输入,而无需先按键。图像窗口不会关闭。
如果您希望在提示之前关闭图像,则可以使用cv2.destroyWindow([window_name])
关闭特定窗口。
在你的情况下是 cv2.destroyWindow('Test')
.
查看您的代码还有 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")
此代码读取并显示图像。当您按下某个键时,它会提示您使用输入。点击终端输入答案。按下回车后,图像窗口关闭并显示正确/错误。
推荐阅读
- java - 日期格式的 java LocalDate 中的错误
- javascript - 在 Vue 环境(或任何其他 JS 框架)中防止页面访问
- typescript - mqtt:net.createConnection 不是函数
- redis - Redis 在复制中使用哪种提交协议与副本通信?
- sql-server - 在 Azure Data Studio 和 SSMS 或 SSRS 中执行 SQL 查询时的不同行为
- java - 无法弄清楚如何获得正确的输出
- javascript - 在 Sequelize 中,我如何检索父记录及其所有孩子,但仅在孩子和孙子之间存在条件的情况下?
- aws-sdk - 具有内容长度范围支持的预签名后 java sdk
- node.js - 仅当我更改窗口大小或类型时才会打印 nodejs readline 问题
- c# - 单元测试用例的最佳实践