Linux中应用层通过v4l2框架提供的接口操作camera传递到内核的数据的过程
在Linux中应用层获取图像的数据都是通过固定的框架实现的。首先试想一下,应用层获取一帧一帧的图像数据,需要做哪些步骤?如果我们想从Linux的内核中获取数据,最直接的方法就是mmap内存映射获取一帧图像数据在应用层的操作空间的首地址,这样应用层就可以直接读取这个首地址就获取到了图像的数据了。 代码参考:https://www.jianshu.com/p/0ac427d267d4 这里主要是讲解v4l2中应用层怎样从内核中获取数据的方法。至于之前的初始化中的获取camera的属性,或者视频格式的设置等。请参考:https://blog.csdn.net/u010299133/article/details/103737645 1.就像上面分析的那样,首先需要将位于内核的首地址映射到用户空间,并且内核以多大的缓冲空间存取视频帧的数据,是需要应用层决定的,操作方法如下: struct v4l2_requestbuffers req; // 申请帧缓冲 req.count=FRAME_NUM;// 这个需要用户决定,在内核中申请的帧缓冲的个数,一般以应用层能够处理的过来即可。 4 个或者 5 个 req.type=V4L2_BUF_TYPE_VIDEO_CAPTURE; req.memory=V4L2_MEMORY_MMAP; if(ioctl(fd,VIDIOC_REQBUFS,