我正在尝试设置 See3Cam_CU130 的白平衡设置通过 python 将网络摄像头设置为单个值。这是为了防止白平衡在我的分析过程中发生变化并干扰结果。我认为最好的方法是:
- 将相机设置为自动白平衡
- 在自动模式下读取当前的白平衡温度
- 禁用自动白平衡,并将其固定在之前的值
为此,我尝试运行:
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
,但是白平衡参数仍然是auto,其值没有改变。
如果我改为使用我的 C920 网络摄像头运行此代码,白平衡将按预期关闭,并且我能够正确获取/设置它的值。
这是 See3Cam 的问题,还是 OpenCV 只是更好地支持 C920,因为它是一种更流行的网络摄像头?我可以做些什么来获得所需的行为?
我知道我可以使用 cam.set(cv2.CAP_PROP_SETTINGS, 1)
打开 dshow 配置对话框,但出于显而易见的原因,我不想手动执行此操作。
这是在 Windows 10、Python 3.5.2、OpenCV 3.2.0 上测试的
最佳答案
根据 UVC 规范,在自动模式下,白平衡手动控制不会更新。因此当 Controller 处于自动模式时读取手动值没有意义。
关于python - See3CAM/OpenCV 自动白平衡支持,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43649947/