系统参数:Windows 8.1,Python 2.7.13,OpenCV 3.2.0.7
此代码可以正常工作。我尝试了.avi和.mp4视频:
import numpy as np
import cv2
import time
cap = cv2.VideoCapture('tmp.avi')
while(True):
ret, frame = cap.read()
cv2.imshow('frame',frame)
if cv2.waitKey(1) & 0xFF == 27:
break
cap.release()
cv2.destroyAllWindows()
但是,当我尝试从网络摄像机获取图片时,尽管ret为True,但我总是看到黑屏:
import numpy as np
import cv2
import time
cap = cv2.VideoCapture(0)
while(True):
ret, frame = cap.read()
if not ret: continue
cv2.imshow('frame',frame)
if cv2.waitKey(1) & 0xFF == 27:
break
cap.release()
cv2.destroyAllWindows()
我尝试使用抓取和检索方法而不是读取方法,因此抓取返回True,但检索返回ret = False:
import numpy as np
import cv2
import time
cap = cv2.VideoCapture(0)
while(True):
if not cap.grab(): break
ret, frame = cap.retrieve()
if not ret: continue
cv2.imshow('frame',frame)
if cv2.waitKey(1) & 0xFF == 27:
break
cap.release()
cv2.destroyAllWindows()
最后的代码可用于视频。
Windows Camera软件可以正常工作,因此网络摄像头还可以。
我尝试重新安装OpenCV,但没有帮助。
问题是什么?为什么读取方法返回True却检索方法返回False?
最佳答案
我今天在使用gocv.io库的Windows上也遇到了这个问题。
我删除并重新安装了网络摄像头驱动程序,问题已解决。