我正在尝试通过python将See3Cam_CU130网络摄像头的白平衡设置设置为单个值。这是为了防止白平衡在我的分析过程中发生变化并干扰结果。我认为最好的方法是:

  • 将相机设置为自动白平衡
  • 读取自动启用时的当前白平衡温度
  • 禁用自动白平衡,并将其固定为以前的值

  • 为此,我尝试运行:
    cam = cv2.VideoCapture(0)
    currentWB = cam.get(cv2.CAP_PROP_WHITE_BALANCE_BLUE_U)
    cam.set(cv2.CAP_PROP_WHITE_BALANCE_BLUE_U, currentWB)
    
    尽管最后一行返回True,但是白平衡参数保持自动状态,其值保持不变。
    如果我改用C920网络摄像头运行此代码,则白平衡将按预期关闭,并且我能够正确获取/设置其值。
    这是See3Cam的问题,还是因为OpenCV是更流行的网络摄像头,它对C920的支持才更好?有什么我可以做的以获得所需的行为?
    我知道我可以使用cam.set(cv2.CAP_PROP_SETTINGS, 1)打开dshow配置对话框,但是出于明显的原因,我宁愿不手动执行此操作。
    在Windows 10,Python 3.5.2,OpenCV 3.2.0上进行了测试

    最佳答案

    根据UVC规范,在自动模式下,白平衡手动控制不会更新。因此,当控件处于自动模式时,读取手动值毫无意义。

    关于python - See3CAM/OpenCV自动白平衡支持,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43649947/

    10-08 21:32