如何使用python中的opencv从相机流中准确捕获关键帧?
我正试图从一个网络摄像头中捕捉按键时的图像。下面的代码是成功的如何使用python中的opencv从相机流中准确捕获关键帧?,python,video,opencv,camera,video-capture,Python,Video,Opencv,Camera,Video Capture,我正试图从一个网络摄像头中捕捉按键时的图像。下面的代码是成功的 import cv cv.NamedWindow("w1") camera = cv.CaptureFromCAM(-1) while True: key = cv.WaitKey(0); if key == 'q': break; image = cv.QueryFrame(camera) cv.Sho
import cv
cv.NamedWindow("w1")
camera = cv.CaptureFromCAM(-1)
while True:
key = cv.WaitKey(0);
if key == 'q':
break;
image = cv.QueryFrame(camera)
cv.ShowImage("w1", image)
cv.DestroyWindow("w1")
对于第一次按键,它可以正常工作。对于下一个向下键,即使移动了,也会显示与第一个帧非常接近的帧。几次按键后,它会变成实际的图像。我可以推断,在存储帧的地方存在某种缓冲区
我想知道是否有人可以帮助我在按键时获得精确的帧
我正在使用带有python接口的opencv。操作系统是ubuntu 11.04。对捕获帧的调用被发送到v4l库。我有一个集成的网络摄像头与我的戴尔笔记本电脑
我想知道是否有人能帮我解决这个问题
非常感谢我建议您以稍微不同的方式尝试:
import cv
cv.NamedWindow("w1")
camera = cv.CaptureFromCAM(-1)
while True:
image = cv.QueryFrame(camera)
key = cv.WaitKey(33)
if key == 'q':
break
elif key != -1:
cv.ShowImage("w1", image)
cv.DestroyWindow("w1")
请注意对cv.WaitKey()的调用中的更改:与其阻塞它,不如等待一段合理的时间。然后检查是否实际按下了某个键(键!=-1)
我应该注意到,您的代码在我的Mac OS X 10.6和OpenCV 2.3上运行。@cesarbs,这是一种很好的方法,但问题是我们将不断检索帧,这将给系统带来负担。你有没有想过通过连续检索来实现这一点?谢谢。