【问题标题】:OpenCV - QueryFrame() returns older image from the webcamOpenCV - QueryFrame() 从网络摄像头返回旧图像
【发布时间】:2014-06-04 11:04:33
【问题描述】:

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

【问题讨论】:

  • 当您从相机中读取一帧帧时,如何确定捕获的图像会滞后 2~3 秒?
  • 在 for 循环中重复调用 QueryFrame() 时,返回的图像似乎赶上了。
  • 可以,循环一段时间后可以保存第第N帧
  • 可以和我们分享整个代码吗?
  • @zhangxaochen 试过了,但是从长远来看,帧数明显滞后。

标签: python opencv image-processing


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-07-06
    • 2013-06-03
    • 2017-04-03
    • 2012-08-08
    • 2012-06-12
    • 2015-08-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多