V4L2,即 video for linux 2,V4L的第二版,linux下的视频库,非常方便用于采集摄像头数据,使用方法一般有以下流程
打开设备——(检查设备属性)——设置帧格式——(设置采集速度即帧率)——设置缓冲区管理方式——开始采集图像——获取图像数据——处理数据——关闭设备
1. 打开设备
linux下一切皆文件,硬件设备也有其文件节点,故摄像头打开设备和打开文件一样
int fd;
fd = open("/dev/video0", O_RDWR)
其中“/dev/video0为摄像头设备
2. 检查设备属性
此为可选,如果不确定摄像头是否支持某个功能,可先检查再使用
//query camera capabilities
struct v4l2_capability cap;
if (ioctl(fd, VIDIOC_QUERYCAP, &cap) == -1)
{
perror("VIDIOC_QUERYCAP failed!\n");
return false;
}
结果将保存再cap结构体中,其中比较重要的是capabilities,从这一项可以检查是否支持某项功能
主要包括类型,摄像头永远是capture,采集图像的宽高,格式等