OpenCV的摄像头取图模块: V4L2
1. v4l2 命令行操作
[简书: V4L2框架概述](https:# www.jianshu.com/p/57a31ab1d95a)
Video4Linux2,是V4L的改进版。Linux操作系统下用于采集图片、视频和音频数据的API接口,配合适当的视频采集设备和相应的驱动程序,可以实现图片、视频、音频等的采集。在远程会议、可视电话、视频监控系统和嵌入式多媒体终端中都有广泛的应用。
sudo apt-get install libv4l-dev
sudo apt-get install v4l-utils
使用
# 显示Camera所有信息(分辨率:Width/Height)
v4l2-ctl -d /dev/video0 --all
# 显示Camera信息
v4l-ctl -D
# 播放yuyv422格式数据
ffplay -i test.yuv -pix_fmt yuyv422 -s 1280x720
# 获取支持的编码格式
v4l2-ctl --list-formats -d /dev/video4
ioctl: VIDIOC_ENUM_FMT
Index : 0
Type : Video Capture
Pixel Format: 'MJPG' (compressed)
Name : Motion-JPEG
Index : 1
Type : Video Capture
Pixel Format: 'YUYV'
Name : YUYV 4:2:2
# 获取支持的camera设备
v4l2-ctl --list-devices -d /dev/video4
USB Camera: USB Camera (usb-0000:00:14.0-1.2):
/dev/video4
/dev/video5
Integrated Camera: Integrated C (usb-0000:00:14.0-8):
/dev/video0
/dev/video1
/dev/video2
/dev/video3
# Camera各种模式
v4l2-ctl -d /dev/video0 --list-ctrls
# 获取支持的分辨率和编码格式
v4l2-ctl --list-formats-ext -d /dev/video4
2. pyv4l2
安装:
pip install pyv4l2
Example:
from pyv4l2.frame import Frame
from pyv4l2.control import Control
frame = Frame('/dev/video0')
frame_data = frame.get_frame()
control = Control("/dev/video0")
control.get_controls()
control.get_control_value(9963776)
control.set_control_value(9963776, 8)