opencv 文档中没有的 VideoCapture 属性定义的含义

问题描述 投票:0回答:1

请问官方文档中没有定义的视频采集属性的含义是什么?例如,

import cv2
cap = cv2.VideoCapture(filename)

视频属性可以通过以下任一方式进行轮询:

cap.get(cv2.CAP_PROP_FPS)
cap.get(5)

opencv 文档定义了最多 51 个属性。但是索引 55、68、69 和 70 处有元数据属性,但它们在文档中没有相应的定义。它们是在其他地方定义的吗?也许是 mp4 或 h.264 规范?

python opencv video-capture
1个回答
0
投票

有超过 200 个...这里是如何列出它们

import cv2


print(f"{'Counter':<8}{'ID':<8}{'Name'}")
i = 0
for attr in dir(cv2):
    if attr.startswith('CAP_PROP'):
        print(f"{i:<8}{getattr(cv2, attr):<8}{attr}")
        i += 1

输出

Counter ID      Name
0       17008   CAP_PROP_APERTURE
1       600     CAP_PROP_ARAVIS_AUTOTRIGGER
2       63      CAP_PROP_AUDIO_BASE_INDEX
3       61      CAP_PROP_AUDIO_DATA_DEPTH
[...]
24      31      CAP_PROP_DC1394_MAX
25      -2      CAP_PROP_DC1394_MODE_AUTO
26      -3      CAP_PROP_DC1394_MODE_MANUAL
27      -1      CAP_PROP_DC1394_MODE_ONE_PUSH_AUTO
28      -4      CAP_PROP_DC1394_OFF
29      15      CAP_PROP_EXPOSURE
30      17009   CAP_PROP_EXPOSUREPROGRAM
31      28      CAP_PROP_FOCUS
[...]
276     450     CAP_PROP_XI_WB_KB
277     449     CAP_PROP_XI_WB_KG
278     448     CAP_PROP_XI_WB_KR
279     451     CAP_PROP_XI_WIDTH
280     27      CAP_PROP_ZOOM

按 ID 对它们进行排序或将它们放入字典形式可能会很有用

def cap_prop() -> dict:
    pairs = [(getattr(cv2, attr), attr) for attr in dir(cv2) if attr.startswith('CAP_PROP')]
    pairs.sort()
    return dict(pairs)

props = cap_prop()

print(props.get(10, None))
#CAP_PROP_BRIGHTNESS
print(props.get(71, None)) # use the get-form, IDs are not complete!
#None
© www.soinside.com 2019 - 2024. All rights reserved.