1、视频图像数据采集的实现

首先加载USB摄像头驱动程序,接着就是编写一个对视频流采集的应用程序。摄像头中的各种I/O口的控制主要依靠Vide04Linux提供的应用程序接口函数实现,主要有Open、Read、Write等。V4L下的视频采集1。在本系统中,将有关摄像头的各种数据和结构封装成了一个类,主要用到的一些系统调用函数定义如下:

open(“/dev/vide00”,O—RDWR):设备的打开。

close(fd):设备的关闭。

mmap(void+addr,size—t len,int prot,int flags,int fd,off__t offset):

设备缓冲区到内存空间的映射。

munmap(void*addr,size t len):采集工作结束后取消mmap和mbuf的绑定。

ioctl(int Rl,jnt cmd...,):控制I/O的通道。

2、Linux下图象数据的JPEG压缩

由于视频信息数据量过大,因此必须在视频传输前对图像数据进行压缩处理。在本系统中,摄像头采集过来的图像数据格式为RGB24,通过调用Linux下的Libjpeg库来实现视频数据的编码,把RGB24图像数据转换为JPEG格式。下面简述下整个压缩处理过程:首先初始化JPEG压缩的图片格式,调用jpeg_set—defauhs(&cmjpeg),接着初始化JPEG压缩图片质量,通过jpeg_set—ratio(&cmjpeg,raTIo,7rURE)实现。

开始压缩:jpeg_start—compress(&cmjpeg,TURE);for(i--0,line--buf;ibuf 0。((_dst_ptr)cmjpeg.dest)一》buffer,size);

释放内存并销毁cmjpeg变量:jpeg_destory_compress(&cmjpeg)

jpeg_buff_free(&emjpeg);

最后返回return size;返回值size标记了缓冲区中视频数据的实际长度。

3、系统网络通讯的实现

本系统采用B/S(浏览器/服务器)模式的通信构架。用户只需在远程客户机安装一个普通的浏览器软件,其他大部分工作由Web服务器完成。B/S模式开发的监控软件,降低了对系统软件的要求,避免了用户对客户端的安装和设置,实现了软件安装的简单化、自由化。