嵌入式工程师成长之路 系列文章 总目录
系列文章总目录
希望本是无所谓有,无所谓无的,这正如脚下的路,其实地上本没有路,走的人多了,也便成了路
原创不易,文章会持续更新,欢迎微信扫码关注公众号
承接 小程序 / 嵌入式 / PC端项目开发,联系作者

1.摄像头接口

从硬件上看,有USB接口的摄像头,有CMOS接口的摄像头。但是它们的驱动程序都遵循通用的标准,对应用程序都暴露相同的API,所以应用程序可以使用同一套代码来访问不同的摄像头。

这个通用的标准就是V4L2。

2.摄像头采集到的数据的参数

可以认为摄像头采集到的就是一幅图片,所以有以下参数:
(1)图片宽高,也就是分辨率
(2)图片的格式,也就是数据格式,数据格式:RGB、YUV、JPEG、MJPG、有些网络摄像头还支持直接输出H246裸流。
(3)帧率,一秒钟有多少张图片。

可以通过查看MJPG-Streamer的源码来查看都有哪些api接口。MJPG-Streamer读取摄像头数据的源码位于:

3.常用摄像头api接口


api总结:

(1)设置分辨率,格式,帧率。
譬如设置分辨率为20002000,写了20002000不是真的就像摄像头的分辨率设置为了2000*2000,而是要看摄像头支不支持该分辨率,如果不支持,摄像头驱动会将分辨率设置为自己支持的并且最相近;其他参数的设置同理。

(2)启动摄像头。
(3)获取摄像头数据。
(4)停止。

4.读取摄像头数据

第2个接口,查询功能:有些摄像头支持通过read函数直接读取摄像头数据,而有些摄像头只能通过mmap来映射一块内存(这种映射方式更普遍)。

摄像头数据在内核中的组织方式:

(1)app向内核申请一系列buffer,譬如buffer0、buffer1…
(2)app把所有buffer挂到队列中,也就是入列。
(3)驱动会把摄像头数据放到这些buffer中。
(4)如果某个buffer有数据了,它里面的某些标志位会被置位。
(5)app检测到buufer被置位了,就把该buffer从队列中拿出来处理,也就是出列。
(6)app处理完该buffer后,再次把它入列。

从这里可以看出,这套框架把队列的处理完全交给app。

app怎么访问这些内核的buffer?
直接使用mmap将这些buffer映射到用户空间就可以了。

注意:
接口10、11、12是一个循环的过程,直到摄像头停止工作。

摄像头硬件详解,请看文章:【专题9: linux驱动】 之 【linux 摄像头驱动(1)- CMOS摄像头硬件】

应用层调用摄像头接口的例子,详情请看文章:【专题9: linux驱动】 之 【linux摄像头驱动(2)应用层如何调用摄像头接口】

5.视频监控 - 摄像头接口相关推荐

  1. .NET Core/C# 对接成都智慧工地《建筑垃圾运渣车辆视频监控系统》

    1.首先从运渣车识别对接QQ群下载并阅读成都市智慧工地建筑垃圾运渣车辆在线视频监控系统接口及功能要求说明书 文档里面只有两个接口,一个获取授权设备列表.另一个是上传识别数据.下面是对接过程中遇到的问题 ...

  2. 智能摄像头视频监控,智和信通一站式解决方案

    为进一步加强公共安全视频监控建设联网应用工作,推动整合各类视频图像资源,九部委联合发布的<关于加强公安视频监控建设网络化应用的若干意见>,明确以全域覆盖.全网共享.全时可用.全程可控为总目 ...

  3. 视频监控系统 摄像头与网络存储服务器兼容,网络视频监控系统技术要点

    1 高清视频监控的主流技术 宽动态 数字宽动态并没有达到真正意义上的扩大成像动态范围的目的,而是通过软件的图像后处理算法提高了局部区域的对比度,一般由摄像机ISP模组实现.我们肉眼可辨别的灰阶范围十分 ...

  4. 电网视频监控系统国网B接口中注册的接口流程GB281181国标流媒体服务平台

    国网B接口电网B接口 1.电网视频监控系统 2.电网B接口 协议(部分) 2.1.注册的接口流程 3.搭建GB28181视频直播平台 4.电网B接口设备如何接入 1.电网视频监控系统 电网视频监控系统 ...

  5. 第三阶段应用层——2.6 视频监控—CMOS摄像头的硬件原理

    视频监控-CMOS摄像头的硬件原理 硬件平台:韦东山嵌入式Linxu开发板(S3C2440.v3) 软件平台:运行于VMware Workstation 12 Player下UbuntuLTS16.0 ...

  6. 第三阶段应用层——2.7 视频监控—从零写CMOS摄像头驱动

    视频监控-从零写CMOS摄像头驱动 硬件平台:韦东山嵌入式Linxu开发板(S3C2440.v3),OV7740摄像头 软件平台:运行于VMware Workstation 12 Player下Ubu ...

  7. 树莓派4b使用摄像头+视频监控

    硬件环境:树莓派4B 4GB 某宝¥20 CSI摄像头130度广角 软件环境: root@raspberrypi:/etc# cat /etc/os-release PRETTY_NAME=" ...

  8. 第三阶段应用层——2.4 视频监控—从0写USB摄像头驱动(1)-描述符的分析与打印

    视频监控-从0写USB摄像头驱动(1)-描述符的分析与打印 硬件平台:韦东山嵌入式Linxu开发板(S3C2440.v3) 软件平台:运行于VMware Workstation 12 Player下U ...

  9. 视频监控、直播——基于opencv,libx264,live555的RTSP流媒体服务器 (zc301P摄像头)By Chain_Gank...

    一个月一步步的学习历程已经在我前面的随笔中.现在终于迎来了最后一步 不多说,贴代码,不懂的,先看看我之前的随笔,有一步步的过程.还是不懂就在评论中问. #ifndef _DYNAMIC_RTSP_SE ...

  10. 施工现场工地监管如何能够接入4G摄像头实现流媒体服务器视频监控?

    安全生产的概念已经深入人心,人们对安全生产的要求也越来越高.在事故多发的建筑行业,如何保证施工人员的人身安全,以及工地的建筑材料.设备等财产的保全是施工单位关心的头等大事. 基于工地监管的项目需求,我 ...

最新文章

  1. 功能强大的 C++ redis 客户端库增加至 acl 项目中
  2. 深入研究Clang(九) Clang代码阅读之打log读流程2
  3. hdu-1576(A/B)
  4. 程序基础:数据结构(郝斌讲解)(2)
  5. 关于js校验,检验常见的比如:电话,数字,邮箱,手机号等等
  6. tomcat c3p0 mysql_C3P0数据库连接池与tomcat一起使用时报错
  7. 如何开发Web应用程序(非网站)
  8. C# 温故而知新:Stream篇(六)
  9. Android启示录——开始Android旅途
  10. 垃圾回收算法与实现系列-学习GC之前的准备工作
  11. 一部分 数据 迁移_yugong异构数据库迁移与同步
  12. 从零开始学习编程,会很难学吗?新手想快速掌握应该怎么学?
  13. python 拓扑排序_python拓扑排序算法实现
  14. Android跨进程通信:图文详解 Binder机制 原理
  15. 除了快,5G 有哪些关键技术?
  16. 计算机用三角函数时如何用弧度制,弧度制 三角函数的简单应用
  17. 最简单AS5048a模块鉴别和读取数据
  18. 如何在OpenWRT的非交换网卡/单口网卡(OpenWRT x86)下配置802.1Q VLAN
  19. 营业执照验证php,基于PHP的营业执照识别示例代码-六派数据
  20. python和办公软件有什么区别_WPS与OFFICE办公软件有哪些区别

热门文章

  1. python开发要学什么_运维为什么要学编程?编程为什么是Python?
  2. STM32CubeMX安装(全图文安装步骤,一步不落下)
  3. 浅析显卡市场的未来走向:现在可以抄底了吗?
  4. Emlog大表哥资源网模板
  5. L13:数据结构-5(树和二叉树)
  6. 网页打开速度慢,如何解决(修改DNS)
  7. 生活娱乐 360安全卫士和QQ大战
  8. Win10桌面图标箭头去掉的方法总结
  9. 桌面快捷方式小箭头隐藏与还原(亲测有效)
  10. MFC隐藏任务栏图标