Python OpenCV在网络摄像头捕获时提供黑屏

时间:2017-05-03 11:33:54

标签: python python-2.7 opencv

系统参数: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?

1 个答案:

答案 0 :(得分:0)

我今天在使用gocv.io库的Windows上也遇到了这个问题。

我删除并重新安装了摄像头驱动程序,问题已解决。