一、摘要
在Linux操作系统下,摄像头的工作都要遵循V4L2的机制,下面介绍如何从无到有,编写代码去使能摄像头拍照。
使用V4L2基本上就是使用内核提供的函数接口,填充相应的函数,主要依靠ioctl()函数填充函数域,然后按照一定操作顺序(工作流程),就能拍照了。
二、操作顺序(工作流程)
前奏:
1、打开USB摄像头设备文件
2、获取驱动信息(VIDIOC_QUERYCAP)
3、设置图像格式(VIDIOC_S_FMT)
帧缓冲:
4、申请帧缓冲(VIDIOC_REQBUFS)
5、获取帧缓冲地址长度信息(VIDIOC_QUERYBUF)
6、使用mmap吧内核空间的帧缓冲映射到用户空间
7、帧缓冲入队列
8、开始采集图像(VIDIOC_STREAMON)
9、取出帧缓冲(VIDIOC_DQBUF)
10、访问帧缓冲(可以读写操作等等)
11、帧缓冲入队列,重新入队(VIDIOC_QBUF)
写代码的时候按照这个编写就行了。