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

2024-06-01 10:37:13 发布

您现在位置:Python中文网/ 问答频道 /正文

我正试图从使用OpenCV的网络摄像头抓取一帧。但是QueryFrame()返回的图像比当前帧要老得多。要获取最新的图像需要多次QueryFrame()调用,但即使如此,也会比预期的当前图像延迟2到3秒。我试着用不同的摄像头,但结果是一样的。我尝试了cv2中的read()方法,但也遇到了同样的问题。有没有什么方法可以解决这个问题,并使用OpenCV从网络摄像头获取当前帧?

网络摄像头的分辨率为640/480,每秒30帧。操作系统: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])

Tags: 方法图像import网络imgreadcodecv2
1条回答
网友
1楼 · 发布于 2024-06-01 10:37:13

解决这个问题的一个办法是在我需要拍照并立即释放时获取网络摄像头的访问权限。

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

相关问题 更多 >