如何通过OpenCv设置相机HDR参数(Python)

时间:2019-04-17 13:30:59

标签: python opencv hdr

我正在尝试创建一个小的python脚本来捕获和显示网络摄像头的输出并设置网络摄像头的HDR值(网络摄像头支持HDR)。
我正在尝试使用OpenCv和Python。
我正在使用Windows平台,但也在Linux(Ubuntu 16.4)上进行了测试,结果相同。

我尝试了几台没有运气的相机:
1.罗技Brio
2. Logitech HD网络摄像头C270

我尝试使用以下代码设置摄像机的HDR参数:

set_hdr = cam.set(cv2.CAP_PROP_XI_HDR_T1, 1)
print("set_hdr: {}".format(set_hdr))

actual_hdr = cam.get(cv2.CAP_PROP_XI_HDR)
print("actual_hdr: {}".format(actual_hdr))

我得到以下输出:

set_hdr: False
actual_hdr: -1.0

我也尝试过在启动相机后这样做,但是没有运气。
完整代码如下:

import cv2

cam = cv2.VideoCapture(0)

set_hdr = cam.set(cv2.CAP_PROP_XI_HDR_T1, 1)
print("set_hdr: {}".format(set_hdr))

actual_hdr = cam.get(cv2.CAP_PROP_XI_HDR)
print("actual_hdr: {}".format(actual_hdr))

print("########  Start Camera Loop  #########")
while True:
    ret_val, img = cam.read()
    if not ret_val:
        print("ret_val is False")
        continue

    cv2.imshow('my_camera', img)

    key_code = cv2.waitKey(10)
    if key_code == 27:
        break  # esc to quit
    elif key_code & 0xFF == ord('h'):
        # change hdr
        actual_hdr = cam.get(cv2.CAP_PROP_XI_HDR)
        print("current actual_hdr: {}".format(actual_hdr))

        set_hdr = cam.set(cv2.CAP_PROP_XI_HDR_T1, 0)
        print("set_hdr: {}".format(set_hdr))

        actual_hdr = cam.get(cv2.CAP_PROP_XI_HDR)
        print("set actual_hdr: {}".format(actual_hdr))

cv2.destroyAllWindows()

结果:

set_hdr: False
actual_hdr: -1.0
########  Start Camera Loop  #########
     ### Trying to change HDR ###
     current actual_hdr: -1.0
     set_hdr: False
     set actual_hdr: -1.0

感谢您的帮助,
萨尔

P.S
我是Stack Overflow的新手,因此欢迎提供有关改善问题的任何建议!

0 个答案:

没有答案