<strike id="kiyse"></strike>
  • <tr id="kiyse"></tr>
  • <strike id="kiyse"></strike><samp id="kiyse"><tbody id="kiyse"></tbody></samp>
    <strike id="kiyse"><s id="kiyse"></s></strike>
    <tr id="kiyse"></tr>
    <noframes id="kiyse"><code id="kiyse"></code></noframes>
    <th id="kiyse"></th>
    <samp id="kiyse"></samp>
  • <th id="kiyse"><s id="kiyse"></s></th>
  • CSI攝像頭接口及在英創主板上的應用

     2017-10-19     作者:黃志超         
    文章標簽:C/C++ESM6800

      目前,英創公司在低成本核心板ESM6800的基礎上,推出了支持攝像頭的版本ESM6800V,ESM6800V是在ESM6800H的基礎上,去掉了一路網口和6路擴展串口,增加了一路CSI(COMS Sensor Interface)信號接口。ESM6800V的其它系統及接口配置與ESM6800完全相同。CSI是一個標準的視頻輸出接口,視頻處理芯片可以直接輸出,不需要涉及到USB接口攝像頭所需的視頻壓縮芯片以及USB接口芯片,所以較市面上普通的USB攝像頭來說,CSI接口的攝像頭更便宜,配合ESM6800V形成了一個低成本的圖像應用方案。


      ESM6800的內核版本為Linux-4.1.15,同時英創公司在ESM6800上移植了基于xcb(X11)平臺的Qt-5.8.0,關于Qt和X11的介紹,可以參考網站文章《ESM6802 X11桌面圖形系統簡介》。CSI攝像頭選用Omnivision公司130萬像素的ov9652(最高分辨率1280×1024)和500萬像素的ov5640(最高分辨率2560×1920),在ESM6800V的系統中已經集成了這兩款攝像頭的驅動,并且能夠自動識別并加載相應的驅動,加載驅動后會自動生成設備節點:“/dev/video0",應用程序可以操作該設備節點對攝像頭進行圖像的采集和控制。


      CSI攝像頭都是用了V4L2驅動提供的標準API來操作的。Video for Linux 2簡稱V4L2,是V4L的改進版。本例中采集的圖像分辨率為640×480,接下來就來介紹一下主要的操作,首先打開設備文件:

      int fd;

           fd=open("/dev/video0",O_RDWR);


      設置視頻的制式和幀格式,制式包括PAL,NTSC,幀的格式個包括寬度和高度等:

      /*set the form of camera capture data*/

      tv_fmt.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;      /*v4l2_buf_typea,camera must use V4L2_BUF_TYPE_VIDEO_CAPTURE*/

      tv_fmt.fmt.pix.width = 640;                                        /*設置圖形分辨率,水平:640 像素*/

      tv_fmt.fmt.pix.height = 480;                                       /*設置圖形分辨率,垂直:480 像素*/

      tv_fmt.fmt.pix.pixelformat = V4L2_PIX_FMT_YUYV;   /*V4L2_PIX_FMT_YYUV*/

      tv_fmt.fmt.pix.field = V4L2_FIELD_NONE;                  /*V4L2_FIELD_NONE*/

      if (ioctl(fd, VIDIOC_S_FMT, &tv_fmt)< 0)

      {

        fprintf(stderr,"VIDIOC_S_FMT set err\n");

        exit(-1);

        close(fd);

      }


      向驅動申請幀緩沖,一般不超過五個:

      struct v4l2_requestbuffers req;

      req.count=2;

      req.type=V4L2_BUF_TYPE_VIDEO_CAPTURE;

      req.memory=V4L2_MEMORY_MMAP;

      //申請幀緩沖

      ret=ioctl(fd,VIDIOC_REQBUFS,&req);

      if(ret<0)

      {

        printf("failture VIDIOC_REQBUFS\n");

        return -1;

      }


      將申請到的幀緩沖映射到用戶空間,這樣就能夠直接操作幀緩沖了:

      for (n_buffers = 0; n_buffers < req.count; ++n_buffers)

      {

        struct v4l2_buffer buf;

        memset(&buf,0,sizeof(buf));

        buf.type =V4L2_BUF_TYPE_VIDEO_CAPTURE;

        buf.memory =V4L2_MEMORY_MMAP;

        buf.index =n_buffers;

        // 查詢序號為n_buffers 的緩沖區,得到其起始物理地址和大小

        if (-1 == ioctl(fd, VIDIOC_QUERYBUF, &buf))

        {

          printf("failture VIDIOC_QUERYBUF\n");

          return -1;

        }

        buffers[n_buffers].length= buf.length;

        // 映射內存

        buffers[n_buffers].start=mmap (NULL,buf.length,PROT_READ | PROT_WRITE ,MAP_SHARED,fd, buf.m.offset);

        if (MAP_FAILED == buffers[n_buffers].start)

        {

          printf("failture mmap\n");

          return -1;

        }

      }


      開始視頻的采集:

      type =V4L2_BUF_TYPE_VIDEO_CAPTURE;

      ioctl (fd,VIDIOC_STREAMON, &type);


      struct v4l2_buffer camera_buf;

      CLEAR (camera_buf);

      camera_buf.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;

      camera_buf.memory = V4L2_MEMORY_MMAP;

      //取出一個緩沖幀

      i1 = ioctl (fd, VIDIOC_DQBUF, &usr_buf);

      if(i1<0)

      {

        printf("failture\n");

        return -1;

      }


      例程的效果如下:


    CSI攝像頭接口及在英創主板上的應用.gif


      所以通過這一套通用的V4L2接口來操作攝像頭的工作流程就能夠讀取攝像頭的數據了,基于CSI接口攝像頭,英創公司提供了一套完整的應用方案,有興趣的客戶請點擊下載:《ESM6800V支持CSI接口攝像頭》

    文章標簽:C/C++ESM6800
    久久久精品免费视频| 免费视频成人国产精品网站 | 亚洲精品视频免费观看| 久久精品中文无码资源站| 亚洲国产人成精品| 国产99久久久国产精品小说| 中文精品久久久久人妻不卡 | 亚洲无码日韩精品第一页| 午夜国产精品免费观看| 精品一区二区久久| 精品中文字幕一区二区三区四区 | 久久精品无码一区二区无码| 国产成人精品福利网站在线观看| 999久久久无码国产精品| 国产精品美女久久久久| 一区二区日韩国产精品| 亚洲精品无码成人| 久久精品国产亚洲77777| 国内精品卡1卡2卡区别| 步兵精品手机在线观看| 亚洲精品无码mⅴ在线观看| 91精品国产自产在线观看永久∴| 中日精品无码一本二本三本| 四虎影院国产精品| 国产精品白丝喷水在线观看| 91九色精品国产免费| 久久久一本精品99久久精品88| 田中瞳中文字幕久久精品| 精品乱人伦一区二区| 国产麻豆剧传媒精品网站 | 亚洲精品无码久久久久去q| 人妻少妇精品系列| 日韩精品免费一区二区三区| 99视频精品国在线视频艾草| 蜜桃麻豆WWW久久囤产精品| 久草精品视频在线播放| 中文字幕精品视频在线| 精品久久久久久久中文字幕| 日韩熟女精品一区二区三区| 在线精品日韩一区二区三区| 国产精品高潮露脸在线观看|