Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/347.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python OpenCV-QueryFrame()从网络摄像头返回旧图像_Python_Opencv_Image Processing - Fatal编程技术网

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

Python OpenCV-QueryFrame()从网络摄像头返回旧图像,python,opencv,image-processing,Python,Opencv,Image Processing,我正在尝试使用OpenCV从网络摄像头中抓取一帧。但是QueryFrame()返回的图像比当前帧旧得多。需要多次QueryFrame()调用才能获取最新的图像,但即使如此,也会比预期的当前图像延迟2到3秒。我尝试使用不同的网络摄像头,但结果是一样的。我尝试了cv2中的read()方法,但遇到了同样的问题。是否有方法修复此问题并使用OpenCV从网络摄像头获取当前帧 网络摄像头的分辨率为640/480,每秒30帧。操作系统:Ubuntu 12.04,OpenCV 2.4.9 # CV code i

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

对我来说,解决这个问题的一个办法是在我需要拍照并立即发布的时候获取网络摄像头

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

当你只从相机中读取一帧时,你如何确定捕获的图像延迟2~3秒?在for循环中反复调用QueryFrame()时,返回的图像似乎赶上了。是的,你可以在循环一段时间后保存第n帧,这样就可以与我们共享整个代码了吗?@zhangxaochen尝试过,但从长远来看,这些框架严重滞后。