0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

英创信息技术CSI摄像头接口及在英创主板上的应用简介

英创信息技术 来源:英创信息技术 作者:英创信息技术 2020-02-06 11:13 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

目前,英创公司在低成本核心板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 ");

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 ");

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 ");

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 ");

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 ");

return -1;

}

例程的效果如下:

所以通过这一套通用的V4L2接口来操作摄像头的工作流程就能够读取摄像头的数据了,基于CSI接口摄像头,英创公司提供了一套完整的应用方案,有兴趣的客户请点击下载:《ESM6800V支持CSI接口摄像头》。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • Linux
    +关注

    关注

    88

    文章

    11628

    浏览量

    217966
  • 嵌入式主板
    +关注

    关注

    7

    文章

    6107

    浏览量

    36950
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    RK3576机器人核心:三屏异显+八路摄像头,重塑机器人交互与感知

    。· 利用开发板的MIPI CSI1和CSI2接口,完整接入8路摄像头,实现了所有通道的视频预览与采集,为机器人构建了全方位的视觉感知系统
    发表于 10-29 16:41

    智慧新核心,龙芯主板助力信体系再升级

    信息技术飞速发展的当下,信体系的自主可控与创新升级已成为国家战略层面的关键任务。作为信产业发展的重要基础硬件支撑,国产工控主板正发挥着
    的头像 发表于 08-11 09:14 565次阅读

    飞腾主板为信产业发展提高硬实力

    信息技术飞速发展的当下,信产业已成为我国实现科技自立自强、保障国家信息安全的关键领域。信,即信息技
    的头像 发表于 07-22 18:20 560次阅读

    庐山派上用v1.9的linux+RTSmart SDK,修改摄像头接cs1报错怎么解决?

    庐山派上用v1.9的linux+RTSmart SDK跑ai_poc里face_detection例程,目前摄像头csi2接口能在LCD跑通,但是把
    发表于 07-22 06:52

    【Milk-V Duo S 开发板免费体验】4 - OV5647 摄像头摄像头测试

    引言 以前使用Milk-V Duo的时候,觉得它的摄像头支持比较弱,只能支持特定型号的摄像头,还不好买。我有个学生甚至因为这个原因退出了集赛。这次特意测试了一下它的摄像头。 DuoS
    发表于 07-08 21:26

    K230micropython下能实现同时用USB摄像头和板载摄像头YOLO识别并显示IDE吗?

    K230micropython下能实现同时用USB摄像头和板载摄像头YOLO识别并显示IDE吗?以及如何提高USB进行YOLO识别的帧数?
    发表于 06-20 06:35

    科普|信是什么?一文读懂“信息技术应用创新”战略

    什么是信?信,即“信息技术应用创新”,是国家推动IT系统自主可控、安全可控的重要战略工程。它不仅是技术层面的创新,更承载着保障国家网络安全、推动产业升级和实现数字主权的重任。简单来
    的头像 发表于 06-13 10:06 6297次阅读
    科普|信<b class='flag-5'>创</b>是什么?一文读懂“<b class='flag-5'>信息技术</b>应用创新”战略

    基于RK3576开发板的网络摄像头方案

    连接IMX415摄像头与Camera1接口。开发环境搭建包括源码工程下载、开发环境配置、例程编译与运行。通过NFS挂载目录,用户可以板卡编译并运行RTSP IPCamera示例程序
    的头像 发表于 05-12 17:54 732次阅读
    基于RK3576开发板的网络<b class='flag-5'>摄像头</b>方案

    浪潮下,国产主板有什么新的发展机遇?

    信息技术应用创新浪潮的推动下,国产主板迎来了诸多新的发展机遇。信产业旨在实现信息技术领域的自主可控,这一战略目标为国产
    的头像 发表于 05-09 09:24 566次阅读
    信<b class='flag-5'>创</b>浪潮下,国产<b class='flag-5'>主板</b>有什么新的发展机遇?

    canmv-k230使用摄像头出现紫色画面,并且显示不完全怎么修复?

    摄像头显示画面程序设置为开机自启动,插type-C开机,有一定概率出现紫色画面的问题,并且摄像头画面显示不完整,一直刷。 软硬件版本信息 01studio主板,gc2093
    发表于 04-28 07:02

    嘉立庐山派,摄像头和处理后的画面有办法通过无线的方式传递给电脑吗?

    如题:嘉立庐山派,摄像头和处理后的画面有办法通过无线的方式传递给电脑吗?求大佬指点。
    发表于 04-27 08:34

    RT1176是否有任何驱动程序示例可以通过并行摄像头接口与8/10/12位摄像头通信?

    对于RT1176,是否有任何驱动程序示例可以通过并行摄像头接口与 8/10/12 位摄像头通信?我 SDK 中只看到一个 MIPI CSI
    发表于 03-28 06:54

    监控摄像头接口类型

    监控摄像头接口类型多样,主要可以分为以下几类: 1 Power接口 Power接口为电源输入接口,外部电源给
    的头像 发表于 02-14 18:10 9391次阅读
    监控<b class='flag-5'>摄像头</b>的<b class='flag-5'>接口</b>类型

    米尔瑞芯微RK3576实测轻松搞定三屏八摄像头

    能力和丰富的接口资源,非常适合用于高端显控系统的开发和优化。 综上所述,RK3576以其卓越的计算能力、多屏幕支持、强大的视频编解码能力和高效的协处理器,多屏多摄像头应用场景中表现出色。米尔
    发表于 01-17 11:33

    多光谱火焰检测摄像头

    随着工业化进程的加快,火灾安全问题日益受到重视。传统的火焰检测技术主要依赖于温度传感器和烟雾探测器,但这些方法某些情况下存在响应慢、误报率高等缺陷。为了解决这些问题,多光谱火焰检测摄像头应运而生
    的头像 发表于 12-11 10:50 1095次阅读
    多光谱火焰检测<b class='flag-5'>摄像头</b>