系统参数: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()
我尝试使用抓取和检索方法而不是read方法,因此抓取返回True,但retrieve返回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,但没有帮助。
有什么问题?为什么检索方法返回False虽然read方法返回True?