【1】linux 内核有video for linux简称v4l。v4l是linux影像系统与嵌入式影像的基础,是linux kernel里支持影像设备的一组apis,配合适当的视频采集卡与视频采集卡驱动程序,v4l可以实现影像采集、am/fm无线广播、影像codec、频道切换等功能。目前,v4l主要应用在影像串流系统与嵌入式影像系统里,其应用范围相当广泛,例如:远程教学、远程医疗、视频会议、视频监控、可视电话等。v4l为2层式架构,最上层为v4l驱动程序,最下层则是影像设备驱动程序。
【2】接上usb摄像头,硬件设备在linux下都是作为文件访问,所以只需在/dev/下查找,一般情况下为video0。当摄像机通过usb接口连接到视频采集终端后,在程序中调用v4l apis对设备文件video0的读操作即可实现摄像头视频数据采集。其主要过程如下:
1) 打开设备文件: int v4l_open(char *dev, v4l_device *vd){}打开影像源的设备文件;
2) 初始化picture: int v4l_get_picture(v4l_device *vd){} 获取输入的影像信息;
3) 初始化channel:int v4l_get_channels(v4l_device *vd){} 获取每个channel的信息;
4) 对channel设置norm:int v4l_set_norm(v4l_device *vd, int norm){} 对所有的channel设置norm;
5) 设备地址映射:v4l_mmap_init(v4l_device *vd){} 返回存放图像数据的地址;
6) 初始化mmap缓冲区: int v4l_grab_init(v4l_device *vd, int width, int height){};
7) 视频捕获同步: int v4l_grab_sync(v4l_device *vd){};
8) 视频捕获: int device_grab_frame(){}。
针对usb摄像头设备文件/dev/video0的视频采集程序流程,首先调用v4l_open()函数打开视频设备,设备文件开启成功后使用v4l_ get_capability()读取设备信息,然后选择相应的视频采【集方式进行视频采集并对采集的图像进行处理,最后调用v4l_close()函数关闭视频设备文件。其中的视频采集方式有两种,一种是read()直接读取方式,另外一种是mmap()内存映射方式。mmap()方式下进程之间通过映射同一个文件实现内存共享,各进程可以像访问普通内存一样对文件进行访问。此外,mmap()方式加速了i/o访问,提高了效率,故常选用内存映射方式获取视频。
video for linux支持的数据结构及其用途:
video_capability:设备的基本信息(设备名称、支持的分辨率等);
video_picture:采集的图像的各种属性;
video_channel:各个信号源的属性;
video_windows:包含采集区域的信息;
video_mbuf:利用mmap映射的帧的信息;
video_mmap:用于mmap方式。
通过以上操作,即可将摄像机视频数据采集到内存。采集到内存的视频数据既可采用文件的形式保存,也可将其压缩后通过网络发布到internet。
基于PXA270嵌入式开发板的GPS定位系统设计
一文搞懂住宅和商业电池储能系统架构实现
凌力尔特推出脉冲宽度调制(PWM)发生器LT8500
咖博士咖啡机亮相首届消博会江苏展区
iPhone在天猫的成交额超过5亿元,创有史以来最快纪录
嵌入式视频采集编程思路
电容触摸屏的八大优点介绍
定制led显示屏,带来不一样的视觉体验
韩国基础科学研究院研制出高导电率、可完全变形的超薄电极材料
打破国外技术垄断_中国机器人巨头崛起
唯捷创芯:Wi-Fi 6/6E产品已大规模量产销售 Wi-Fi 7产品正在平台厂商处进行验证
有铅焊台的和无铅焊台有什么区别
Avago推出霍尔效应磁性编码器AEAT-6600-T16
什么是烧录?怎么判别IC是否烧录过
档案室温湿度智能监管系统
电烙铁的使用及注意事项
MXIC 19nm SLC NAND 1Gb/2Gb/4Gb/8Gb 可满足工控市场小容量FLASH短缺需求
电磁制动器的工作原理及选型
TAG8000核相器、无线高压核相器的功能介绍
什么是电猫猫智慧式用电监控系统