V4L2采集图像基本流程

参考 http://blog.csdn.net/tsuibeyond/article/details/50654823

         http://www.cnblogs.com/surpassal/archive/2012/12/19/zed_webcam_lab1.html

      1.打开设备fd = open(FILE_VIDEO1, O_RDWR))

       2.取得设备的capability 看看设备具有什么功能 比如是否具有视频输入 或者音频输入输出等 VIDIOC QUERYCAP struct v4l2 capabilit

      3 选择视频输入 一个视频设备可以有多个视频输入 VIDIOC S INPUT struct v4l2 input

      4 设置视频的制式和帧格式 制式包括PAL NTSC 帧的格式个包括宽度和高度等 VIDIOC S STD VIDIOC S FMT struct v4l2 std id struct v4l2 format 

      5 向驱动申请帧缓冲 一般不超过5个 struct v4l2 requestbuffers 

      6 将申请到的帧缓冲映射到用户空间 这样就可以直接操作采集到的帧了 而不必去复制 mmap 

      7 将申请到的帧缓冲全部入队列 以便存放采集到的数据 VIDIOC QBUF struct v4l2 buffer 

      8 开始视频的采集 VIDIOC STREAMON

      9 出队列以取得已采集数据的帧缓冲 取得原始采集数据 VIDIOC DQBUF 

      10 将缓冲重新入队列尾 这样可以循环采集 VIDIOC QBUF 

     11 停止视频的采集 VIDIOC STREAMOFF 12 关闭视频设备 close fd ;

  

#include <errno.h>
#include <fcntl.h>
#include <linux/videodev2.h>
#include <stdint.h>
#include <stdio.h>
#include <string.h>
#include <sys/ioctl.h>
#include <sys/mman.h>
#include <unistd.h>
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <iostream>

uchar *buffer;                          //buffers 指针记录缓冲帧

#define IMAGEWIDTH 640
#define IMAGEHEIGHT 480

#define TRUE 1
#define FALSE 0

#define FILE_VIDEO1 "/dev/video0"

static int fd;                          //设备描述符
struct v4l2_streamparm setfps;          //结构体v4l2_streamparm来描述视频流的属性
struct v4l2_capability cap;             //取得设备的capability,看看设备具有什么功能,比如是否具有视频输入,或者音频输入输出等
struct v4l2_fmtdesc fmtdesc;            //枚举设备所支持的image format:  VIDIOC_ENUM_FMT
struct v4l2_format fmt,fmtack;          //子结构体struct v4l2_pix_format设置摄像头采集视频的宽高和类型:V4L2_PIX_FMT_YYUV V4L2_PIX_FMT_YUYV
struct v4l2_requestbuffers req;         /
  • 4
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值