繁体   English   中英

OpenCV - QueryFrame()从网络摄像头返回旧图像

[英]OpenCV - QueryFrame() returns older image from the webcam

我试图使用OpenCV从网络摄像头抓取一个帧。 但是QueryFrame()返回的图像比当前帧要早得多。 它需要多次QueryFrame()调用才能获得最新的图像,但即使距离预期的当前图像也要滞后2到3秒。 我尝试使用不同的网络摄像头,但结果是相同的。 我尝试了cv2中的read()方法并遇到了同样的问题。 有没有办法解决这个问题,并使用OpenCV从网络摄像头获取当前帧?

网络摄像头具有30fps,640/480分辨率。 操作系统:Ubuntu 12.04,OpenCV 2.4.9

# CV code
import cv
capture = cv.CaptureFromCAM(0)
img = cv.QueryFrame(capture)
cv.SaveImage("test2.JPG", img)


# CV2 code
import cv2
cam = cv2.VideoCapture()
cam.open(-1)
img=cam.read()
cv2.imwrite("test3.jpg",img[1])

为我解决问题的一个方法就是在需要快速拍摄并立即释放时获取网络摄像头访问权限。

def getframe(name):  
  cam.open(0)
  img=cam.read()
  cv2.imwrite(str(name)+".jpg",img[1])
  cam.release() 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM