[英]OpenCV capture black screen video
我正在从 Aver Media GL310 捕获设备到 ps4 进行视频测试,但是当我在 Python 中显示它时,只出现黑屏。
我正在使用 OpenCV 并且使用网络摄像头一切正常。 此外,在我安装 Aver Media 软件之前,它最初无法识别 USB 索引,但现在它显示为黑色。 从软件来看,图像看起来很好。
我正在使用一些简单的代码,搜索后我尝试更改分辨率、fps、在防病毒软件中添加 python 异常、超时,但似乎没有任何效果。
import cv2
cap = cv2.VideoCapture(2)
cap.set(3,640)
cap.set(4,480)
while True:
ret, img = cap.read()
cv2.imshow("input", img)
key = cv2.waitKey(1)
if key == 27:
break
cap.release()
cv2.destroyAllWindows()
这是一张图像,在低分辨率下它似乎试图显示一些东西,但在高分辨率下它是完全黑色的。 我很感激任何回应。 https://i.stack.imgur.com/YtCUv.png
以下对我有用:
import cv2
#input your device number here. For me it was 2.
cap = cv2.VideoCapture(2, cv2.CAP_DSHOW)
while True:
ret, img = cap.read()
cv2.imshow("input", img)
key = cv2.waitKey(1)
if key == 27: #ESC Key to exit
break
cap.release()
cv2.destroyAllWindows()
我相信默认情况下 cv2 使用 640 x 480 (至少,如果我不指定,对我来说是这样)。 因此,如果您需要 640 x 480,那么上面的代码应该可以工作。
奇怪的是,如果我尝试添加对 cap.set() 的调用,那么像你一样,我有时会遇到一些问题。 会出现以下问题之一:*
问题 1. 无法工作; 每次返回一个黑色帧(并且相当缓慢......每秒约1个)
问题 2. 大多有效; 返回一个黑色(或大部分是黑色)帧作为第一帧,然后正常返回帧。 注意:在 cap.set() 调用之后添加对 time.sleep(.5) 的调用似乎可以消除问题 2,但无助于阻止问题 1 的发生。
注意:在 cap.set() 调用之后添加对 time.sleep(.5) 的调用似乎可以消除问题 2,但无助于阻止问题 1 的发生。 不确定问题 1 的最佳解决方案是什么。 我尝试将所有内容放入方法 start_webcam() 中,如果第 3 帧为黑色,则返回 False,然后重复调用该方法直到它起作用。 像这样:
working = start_webcam() if working == False: while(not working): working = start_webcam()
这将运行、退出并重新运行 start_webcam() 直到成功。 当然必须有更清洁的方法。
但是,如果我使用我的另一个网络摄像头(设备 1),那么调用 cap.set() 没有问题,并且似乎运行没有问题......所以很可能与摄像头有关。
*希望更有经验的人可以详细说明 cap.set() 可能发生的情况以及如何避免此类问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.