繁体   English   中英

OpenCV 采集黑屏视频

[英]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. 无法工作; 每次返回一个黑色帧(并且相当缓慢......每秒约1个)

  2. 问题 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM