嵌入式视频采集编程思路

嵌入式视频采集编程思路,第1张

 

  【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(){}。

  Video for Linux支持的数据结构及其用途:

  video_capability:设备的基本信息(设备名称、支持的分辨率等);

  video_picture:采集的图像的各种属性;

  video_channel:各个信号源的属性;

  video_windows:包含采集区域的信息;

  video_mbuf:利用mmap映射的帧的信息;

  video_mmap:用于mmap方式。

  通过以上 *** 作,即可将摄像机视频数据采集到内存。采集到内存的视频数据既可采用文件的形式保存,也可将其压缩后通过网络发布到Internet。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/dianzi/2713267.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-08-17
下一篇 2022-08-17

发表评论

登录后才能评论

评论列表(0条)

保存