文章目录
一、实例代码
-
连接 USB 相机之后,通过指令
ls /dev/video*
查看设备号,通过一个简单的脚本使用 OpenCV 库来捕获摄像头视频流并在窗口中显示,ESC键退出。pythonimport cv2 # 摄像头设备号 cap = cv2.VideoCapture(0) window_name = "usb camera" # 启用 MJPEG 压缩 cap.set(cv2.CAP_PROP_FOURCC, cv2.VideoWriter_fourcc('M', 'J', 'P', 'G')) # 尝试设置为 60 FPS(是否成功取决于摄像头) cap.set(cv2.CAP_PROP_FPS, 60) # 尝试设置摄像头分辨率 cap.set(cv2.CAP_PROP_FRAME_WIDTH, 1920) cap.set(cv2.CAP_PROP_FRAME_HEIGHT, 1080) # 获取实际设置的分辨率 actual_width = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH)) actual_height = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT)) print(f"实际分辨率: {actual_width}x{actual_height}") # 打印实际帧率(FPS) fps = cap.get(cv2.CAP_PROP_FPS) print(f"摄像头帧率: {fps} FPS") cv2.namedWindow(window_name, cv2.WINDOW_NORMAL) cv2.resizeWindow(window_name, actual_width, actual_height) # 窗口匹配分辨率 while True: ret, frame = cap.read() if not ret: print("读取失败") break cv2.imshow(window_name, frame) if cv2.waitKey(1) == 27: # ESC键退出 break cap.release() cv2.destroyAllWindows()
二、相关设置
-
cap.set(参数属性, 期望值)
,用于向摄像头硬件发送配置请求,尝试将某个参数(如编码格式、帧率、分辨率)设置为指定值。 -
编码格式 :
cap.set(cv2.CAP_PROP_FOURCC, cv2.VideoWriter_fourcc('M','J','P','G'))
是一个 常见且推荐的操作 ,尤其在需要高分辨率、高帧率 或 USB带宽受限 的场景。MJPEG (Motion-JPEG)压缩能显著减少数据量,使摄像头在有限带宽下支持更高的分辨率(如1080p/4K)和帧率(如60FPS/120FPS),同时降低CPU解码负担。相比原始格式(如YUYV),MJPEG 在实时视频捕获中更高效,兼容性广,是OpenCV、工业相机及嵌入式设备的常用选择。若摄像头支持,建议优先启用 MJPEG 以优化性能,若不支持,可回退到默认格式。 -
帧率 :
cap.set(cv2.CAP_PROP_FPS, 60)
是 OpenCV 中控制帧率的属性参数,用于设置摄像头的目标采集帧率(如60FPS),60 是一个请求值,实际帧率取决于摄像头的硬件能力和当前配置的分辨率/编码格式等,可能最高仅支持30FPS
,即使设置为60FPS
也会自动降级。 -
分辨率 :
cap.set(cv2.CAP_PROP_FRAME_WIDTH, 1920)
用于设置摄像头采集画面的目标宽度(水平分辨率),1920同样是一个请求值,实际分辨率可能被摄像头自动调整为最接近的支持值。 -
其他参数设置可供参考并以设备实际响应为准。
参数类别 OpenCV 属性名 典型值/选项 作用说明 适用场景 自动曝光 CAP_PROP_AUTO_EXPOSURE
1
(自动),0
(手动)控制摄像头是否自动调整曝光量 光照变化频繁的环境(如户外) 手动曝光 CAP_PROP_EXPOSURE
范围依赖硬件,典型范围为 -13
到0
手动设置曝光值(正值增亮,负值减暗) 需要固定曝光(如工业检测) 自动白平衡 CAP_PROP_AUTO_WB
1
(自动),0
(手动)启用/禁用自动白平衡 色彩准确性要求高的场景 手动白平衡 CAP_PROP_WB_TEMPERATURE
色温值(如 5000
K)手动设置白平衡色温 特殊光照条件(如霓虹灯环境) 缓冲区大小 CAP_PROP_BUFFERSIZE
1
(最小延迟)减少摄像头内部缓冲帧数,降低延迟 实时控制(如无人机、机器人视觉) 自动对焦 CAP_PROP_AUTOFOCUS
1
(启用),0
(禁用)控制摄像头是否自动对焦 动态距离变化的场景(如人脸跟踪) 手动对焦 CAP_PROP_FOCUS
0
(最近)-100
(最远)手动调整对焦距离 固定焦距需求(如显微镜拍摄) API后端选择 cv2.VideoCapture()
的第二个参数cv2.CAP_V4L2
(Linux常用)指定视频采集后端,解决兼容性问题 跨平台或特定系统(如Linux用V4L2) 亮度调整 CAP_PROP_BRIGHTNESS
0
-100
调整画面整体亮度 低光环境补偿 对比度调整 CAP_PROP_CONTRAST
0
-100
调整画面对比度 增强细节可见性 饱和度调整 CAP_PROP_SATURATION
0
-100
调整色彩饱和度 色彩增强或黑白模式 增益控制 CAP_PROP_GAIN
0
-100
调整信号放大倍数(可能增加噪点) 极低光照环境
小结
上述内容仅用作个人参考,如有问题欢迎在评论区指正,谢谢!!