我正在尝试创建一个小的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的新手,因此欢迎提供有关改善问题的任何建议!