2017-05-03 446 views
0

系统参数:Windows 8.1,Python 2.7.13,OpenCV 3.2.0.7Python OpenCV给摄像头上的黑屏捕获

此代码工作正常。我试过的.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为真:

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 =假:

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相机软件工作正常,所以网络摄像头是好的。

我试图重新安装OpenCV,它没有帮助。

什么问题?为什么检索方法返回False虽然读取方法返回True?

+1

你确定'cv2.VideoCapture(0)'是你的摄像头吗? '可以尝试'cv2.VideoCapture(1)' –

+0

我确定它是0 – Sergey

+0

您可以尝试'print {} x {}“。format(cap.get(3),cap.get(4))'宽度和高度来查看它是否有效。 –

回答

0

我遇到了同样的问题。

尝试卸载并重新安装相机驱动程序。

我不知道为什么,但它为我工作。