Python 忽略OpenCV中waitKey()上的键盘事件
我正在学习OpenCV,我决定用它做一个蛇游戏。几乎完成了,但有一个看似简单的小问题,但我找不到解决方案Python 忽略OpenCV中waitKey()上的键盘事件,python,opencv,Python,Opencv,我正在学习OpenCV,我决定用它做一个蛇游戏。几乎完成了,但有一个看似简单的小问题,但我找不到解决方案 while True: move() cv2.imshow('Snake Game', frame) cv2.waitKey(250) 它应该在下一帧前等待250毫秒,但按键打破了等待,所以当我按下一个键时游戏会加速。我怎样才能让它忽略键盘事件而只使用时间呢?如果waitKey没有停止按键后的等待,我会非常惊讶。事实上,这个名字本身就表明了这一点。所以基本上就像调用
while True:
move()
cv2.imshow('Snake Game', frame)
cv2.waitKey(250)
它应该在下一帧前等待250毫秒,但按键打破了等待,所以当我按下一个键时游戏会加速。我怎样才能让它忽略键盘事件而只使用时间呢?如果
waitKey
没有停止按键后的等待,我会非常惊讶。事实上,这个名字本身就表明了这一点。所以基本上就像调用一个叫做max的函数,然后期望最小值
根据您的代码和您所描述的,您使用waitKey
有两个原因:
在我看来,要做的第一件事就是停止等待,只要准备好就继续不断地显示帧。对于同步,您只需要为每帧打印节省时间。利用这段时间,在用户交互或决定如何处理帧或。。。有一个地方可以帮助您了解游戏循环是如何实现的。请看这里:等待键代码似乎位于无限循环中,请提供有关您的代码以及您希望它执行的内容的更多详细信息。这里有一个不同的线程,我可以从中获取关键输入。这个循环在主线程中。它移动蛇,显示帧,等待250毫秒并继续循环,直到我退出程序。我的问题是,当我按下一个键时,它会继续循环而不等待。我试过了时间。睡觉而不是等待,但是imshow不起作用。谢谢你抽出时间。最后,我在主循环中有一个waitKey(1),并将move()移动到一个新线程,并在移动之前使用time.sleep。它可以工作,但我只是想知道一种方法,在不被按键打断的情况下,用OpenCV显示一段时间的图像。但出于某种原因,这似乎是不可能的。