正文内容
USB摄像头驱动程序
来源:开心麻花
作者:开心麻花
2025-09-19
1

USB摄像头驱动程序(精选8篇)

USB摄像头驱动程序 第1篇

(1)开发板Linux内核版本:2.6.28;

(2)开发板编译器版本:arm-linux-gcc 4.3.1;

(3)宿主机Linux版本:Fedora 9;

(4)USB摄像头通用驱动程序:spca5xx;

(5)插入USB摄像头,在终端窗口运行如下命令:#lsusb

在系统中摄像头识别如下:

这是系统识别出三个测试摄像头的基本信息。ID指的是生产厂商编号,后面是摄像头型号及厂商名称。了解这些信息对摄像头的进一步应用有帮助。

2 程序实现

2.1 了解Video4Linux应用程序API定义

在Linux系统中的linux蛐videodev.h文件定义了针对视频设备的相关信息及I蛐O接口操作函数,这是进行程序开发的基本依据。实际编程中,视频设备同样是以设备文件存在的,可以像访问普通文件一样对其进行读写操作。

2.2 打开USB摄像头设备

其中fd是返回的打开设备的文件号。

2.3 获取及设置USB摄像头的图像属性

在videodevice.h文件中,以结构体的形式定义并封装了摄像头的图像属性信息,如饱和度、亮度、对比度等,如下所示:

由结构体的定义可以看出,不同种类的摄像头其CMOS传感器不同,所以采集到的图像格式也不相同。首先要确定所使用的摄像头采集图像的格式,可以采用如下方法:

执行ioctl(fd,VIDIOCGPICT,&pict)函数读取pict->palette值(只读)并采用循环的形式与预定义值进行比对以确定摄像头的图像格式信息。例如所测试的三个摄像头的图像格式分别是Syntek-VIDEO_PALETTE_RGB565、Avea-VIDEO_PALETTE_YUYV、Z-star-VIDEO_PALETTE_JPEG。图像深度属性pictdepth指的是每像素比特数,是计算图像字节长度的基础。如表1所示。

根据实际需要可以对图像属性进行设置以调整亮度、对比度、饱和度等,即对结构体成员赋值然后执行函数ioctl(vd->fd,VIDIOCSPICT,&pict)即可。

2.4 获取USB摄像头图像采集能力信息

USB摄像头图像采集能力信息由结构体video_capability封装:

执行函数ioctl(fd,VIDIOCGCAP,&videocap)获取相关信息,尤其是最大及最小摄像区域。

2.5 获取及设置图像采集区域

图像采集区域由video_window结构体进行封装。

依据自身实际需要填充并设置图像大小:

Struct video_window videowin;

调用函数ioctl(fd,VIDIOCGWIN,&videowin)获取图像采集区域信息,调用函数ioctl(fd,VIDIOCSWIN,&videowin)设置图像采集区域信息。要注意不能超过图像采集能力的限制。

2.6 计算图像帧的字节数并分配图像缓冲区

USB摄像头每帧图像的字节数由其图像格式确定。即帧图像字节数=图像宽度图像高度每像素字节数。

每像素字节数可由表1推导得出。如VIDEO_PALETT E_RGB565的每像素字节数为2,VIDEO_PALETTE_RGB24的每像素字节数为3。然后分配图像缓冲区如下:

Unsigned char觹pFramebuffer;

pFramebuffer=(unsigned char觹)realloc(pFramebuffer,图像帧字节数);

2.7 读取图像数据

摄像头采集到的图像数据获取有两种方式:直接读取方式和内存映射方式。直接读取方式的优点是实现简单;内存映射方式的优点是效率高,如果采用双缓冲等方法可以获得极高的实时性。本文介绍直接读取方式的实现:

int len=read(fd,p Framebuffer,图像帧字节数);/觹len为实际读取的字节数觹/

使用完USB摄像头设备后一定不要忘记调用函数close(fd)关闭该设备。

2.8 图像格式转换

采集到图像数据以后,根据不同的目的,需要将图像数据转换成相应的格式。如进行数字图像的模式识别,可能需要二值化处理;如进行图像的网络传输,则需将图像转换成JPEG图片以提高效率。在此以RGB565和YUYV两种格式的图像数据转换成JPEG图片为例介绍其一般思路和方法。在Linux系统中进行图像数据转换需要使用转换工具包,jpegsrv-v6b.tar.gz软件包,这个工具的下载及安装说明皆可在网上获得。需要注意的是其支持RGB24格式转换成JPEG格式,所以只能先将RGB565和YUYV两种格式转换成RGB24格式进而再转换成JPEG格式。

2.8.1 RGB565格式转换成RGB24格式

RGB是红绿蓝三原色的意思,RGB565指的是Red、Green、Blue三个颜色分量的值分别是5bit、6bit、5bit,所以每像素两个字节。可采用如下程序进行转换:

2.8.2 YUYV格式转换成RGB24格式

YUYV格式属于YUV颜色系统,Y代表亮度信号,色度信号是由两个互相独立的信号组成,以U和V表示。其工作原理是每4点Y采样,就有2点U和2点V。在这种格式中,色度信号的扫描线数量和亮度信号一样多,但是每条扫描线上的色度采样点数却只有亮度信号的一半。当4:2:2信号被解码的时候,“缺失”的色度采样,通常由一定的内插补点算法通过它两侧的色度信息运算补充,所以每像素一个字节。其图像数据的存储格式如表2所示。

可采用如下程序进行转换:

2.8.3 RGB24格式转换成JPEG格式

限于篇幅的原因,请读者自行参考该工具包的解压缩文件。其中有一个example.c文件详细说明了RGB24与JPEG格式相互转换所需的程序模板,既有步骤的详细说明解释,也有代码实现,读者参考该文件很快就可以编写出转换函数。

3 结束语

基于Video4Linux应用程序接口,并利用通用USB摄像头驱动程序在Linux环境下进行数字图像采集的应用程序开发方法,有助于加深理解Linux操作系统及其设备驱动的一般形式,充分利用手头现有资源进而根据自身实际需要合理选择USB摄像头型号以利于科研及生产开发。

参考文献

[1]田泽.ARM9嵌入式开发试验与实践.北京:北京航空航天大学出版社,2006.

[2]熊茂华.ARM9嵌入式系统设计与开发应用.北京:清华大学出版社,2008.

[3]宋宝华.Linux设备驱动开发详解.北京:人民邮电出版社,20-08.

USB摄像头驱动程序 第2篇

摄像头插在笔记本上面能用的话,说明摄像头本身是没有问题的,

那插在USBHUB上不能用的问题很大可能是供电的问题造成的。

基于USB摄像头的局域网 第3篇

视频监控系统是安全防范系统的组成部分,它是一种防范能力较强的综合系统。视频监控以其直观、方便、信息内容丰富而广泛应用于许多场合。近年来,随着计算机技术、网络技术以及图像处理、传输技术的飞速发展,视频监控技术也有了长足的发展。

1.视频监控技术的发展

随着网络通信、数字视频、多媒体技术的发展,视频监控技术已由传统的模拟走向了数字化、网络化、智能化。由于数字信号具有抗干扰能力强、失真小、传输不受距离限制等优点,因此各种数字视频技术得到了迅速的发展。传统的安全防范系统已逐步向以图像处理为核心的、融合了网络、传感、通信技术的数字视频监控系统过渡。

监控系统的发展经历了第一代的全模拟系统,到第二代部分数字化的系统,再到第三代完全数字化的系统(网络摄像机和视频服务器)三个阶段的发展演变,现在正在向第四代全IP时代前进。

2. USB摄像头视频监控系统的应用领域

由于USB摄像头价格便宜且安装方便,其用户的安装和使用不需要特别复杂的技术水平,因而可以节省大笔的费用。它的即插即用、价格便宜等特点尤其适用于对资金投入不高的家庭用户。对于使用摄像头较多的网吧、学校机房也可以为其在提供基本的安全保障的同时并节省成本。

二系统功能

本系统可以在服务器端通过摄像头获取图像信息,在客户端可以查看网络传输来的图像信息,可以对此拍照、录像、录像回放、动态监控。

功能模块:在服务器端通过摄像头获取图像信息,并且进行网络数据传输。在客户端主要是获取网络数据流,并且实现拍照、录像等功能。

三运行流程

1. TCP/IP协议简介

TCP/IP是供已连接因特网的计算机进行通信的通信协议。

TCP/IP指传输控制协议/网际协议(Transmission Control Protocol/Internet Protocol)。

TCP/IP定义了电子设备(如计算机)如何连入因特网,以及数据如何在它们之间传输的标准。

TCP/IP(传输控制协议/网际协议)是互联网中的基本通信语言或协议。在私网中,它也被用做通信协议。当你直接网络连接时,你的计算机应提供了一个TCP/IP程序的副本,此时接收你所发送的信息的计算机也应有一个TCP/IP程序的副本。

TCP/IP是一个两层的程序。高层为传输控制协议,它负责聚集信息或把文件拆分成更小的包。这些包通过网络传送到接收端的TCP层,接收端的TCP层把包还原为原始文件。低层是网际协议,它处理每个包的地址部分,使这些包正确到达目的地。网络上的网关计算机根据信息的地址进行路由选择。即使来自同一文件的分包路由也有可能不同,但最后会在目的地汇合。TCP/IP使用客户端/服务器模式进行通信。TCP/IP通信是点对点的,即通信是网络中的一台主机与另一台主机之间。

2.服务器端数据传送

服务器端首先读取摄像头的视频信息,然后图像信息转换为数据流。等待客户端的连接,等连接后往客户端传输数据。

3.客户端数据接收

客户端接收来自服务器端传输来的网络流,然后把这些网络流重组成图像信息显示在空间PICTUREBOX中。

四图像处理

第一,快照模块。实际上就是把PICTUREBOX中的图像保存为文件形式。

第二,录像模块。录像功能主要是如何将PICTUREBOX中的图片转换为AVI或者其他录像格式,调用了VFW的Tiger.Video.VFW.dll文件很方便地实现了此项功能。在dll文件主要有aviread和aviwriter两个函数,主要是avi和BMP之间的互相转换,这个程序主要用到aviwriter当中的addframe方法是往视频文件中写信息,Open方法是打开压缩方式对话框。

第三,回放模块。回放功能是用了VS2005当中的Windows media控件来实现的。

第四,动态监测模块。动态监测顾名思义就是在有物品运动的时候自动进行拍照、录像、报警等。实现动监的基本思想是:在一定的时间间隔内获取两幅图片,对两幅图片进行对比,如果图片相同则没有动作,如果不同,则进行录像。

五测试运行情况

任何一个系统的正确运行都是建立在多次测试基础上的,只有经过多次测试才可以发现系统存在的不足或逻辑错误。

具体测试内容如下:(1)输入错误的IP地址。不能连接服务器。(2)服务器端未开启。客户端不能连接,并且出现相应提示。(3)客户端或服务器意外断开连接。当一方断开连接时另一方出现提示,并且可以恢复连接。(4)录像,快照功能。对于此功能不停地对视频进行录像和拍照未出现错误。(5)动监模块。点击动态监测按钮,不同晃动摄像头和在摄像头静止的情况下查看保存的图片信息,功能正常。

六结论

在整个设计工作中主要的工作有:(1)服务器和客户端的网络数据传输。(2)客户端的数据重组,录像功能,快照功能,回放功能,动态监控功能。本系统主要运用了视频捕捉、VFW、AVICap编程、视频文件格式、网络传输协议TCP/IP等很多知识。通过USB摄像头在服务器获取到视频图像信息,然后再在客户端接收网络传输来的数据流,在客户端实现了录像、快照、回放、动态监控的功能。

摘要:整个系统主要由客户端和服务器端两个应用程序构成。服务器端可以通过USB口的摄像头采集视频数据, 客户端通过网络接收服务器传出的实时帧数据, 然后从帧中取出图像数据。本文首先对视频监控领域做了总述, 然后介绍监视系统的系统结构、各个模块组成和功能及其运行的流程, 最后介绍软件的运行和操作方法。

关键词:局域网监视系统,视频捕捉,TCP/IP,数据传输

参考文献

[1]阮林波、曹锦云.基于USB摄像头的自动监控系统[J].计算机工程与设计, 2004 (6)

USB摄像头驱动程序 第4篇

GTK全称为GIMP Tool Kit,即GIMP工具包,是用于实现图形用户界面的函数库,已经发展为Linux下开发图形界面应用程序的主流开发工具之一。在本程序设计中与采集图像数据后,运用GTK函数库,最终实现在桌面上摄像头图像的连续显示播放。

1 摄像头驱动程序加载

在Linux下,所有的外设均被看成是一种特殊文件进行处理,称之为设备文件。系统调用及各种函数库直接或间接地提供了内核和应用程序之间的接口,而设备驱动程序则是内核和外设之间的接口,它完成设备的初始化和释放、对设备文件的各种操作和中断处理等功能。由于屏蔽了外设硬件的细节,使得应用程序可以像普通文件一样对外设进行操作而无需关注其具体的细节。在本程序设计中将对设备文件/dev/video0进行视频图像采集,其中0表示第一个视频设备的编号,以此类推。

这里使用罗技快看系列中Communicate Deluxe型号的USB摄像头进行视频图像采集,采用Linuxuvc驱动程序,这是一个为USB视频设备提供驱动的开源项目,支持Video4Linux2应用编程接口,具体步骤如下:

(1) 下载和安装Linuxuvc驱动程序,并将生成的模块文件Linuxuvc.ko复制至/lib/modules/′uname-r′/kernel/drivers/media/video目录下;

(2) 在终端使用命令“modprobe linuxuvc”加载驱动模块,或者在其安装目录下使用命令“insmod linuxuvc.ko”加载也可。

2 GTK主程序设计

GTK应用程序采用事件驱动机制,在完成用户界面创建后进入Gtkmain()主循环,由此GTK接管了控制权,然后在主循环中循环地监听事件和信号的发生。当捕获事件或信号后,则将控制权传递至所注册的信号事件处理程序进行处理,然后根据此程序选择返回或者退出GTK应用程序。同时,视频图像的截取和显示播放也是一个循环。在本程序中采取将视频图像读取及显示模块(Camshow())注册为GTK空闲函数,由此使得每次通过GTK主循环后都将调用此模块,读取和显示一帧图像。主程序的流程设计如图1所示。

3 视频设备初始化模块设计

在Linux系统下视频设备的图像数据采集是基于Video4Linux2应用编程接口的,通过使用接口提供的有个数据结构定义和函数库,对摄像头进行初始化。下面对主要步骤以及所用到的关键函数进行介绍。

3.1 打开视频设备文件

int fd;

fd =open("/dev/video0",ORDWR);

利用open函数打开视频设备后,可以获取相应的文件描述符;若打开失败,则要求返回相应的错误信息。在实际的程序设计中,必须加入类似的出错处理,以方便程序调试。

3.2 获取视频设备相关属性

struct v4l2capability cap;

ioctl (fd,VIDIOCQUERYCAP,& cap)

在Linux程序设计中ioctl调用有点像是大杂烩,它提供了一个用于控制设备及其描述符行为和配置底层服务的接口,对设备的I/O通道进行管理。终端、文件描述符、套接字甚至磁带机都可以使用为它们定义的ioctl,在Video4Linux2中也是通过ioctl函数对设备进行编程的。其原型为:int ioctl(int fildes,int cmd,);ioctl对描述符fildes指定的对象执行cmd参数中给出的操作,根据具体函数还可能有一个可选的第三参数。如上所示,利用VIDIOCQUERYCAP来取得设备文件的属性参数并存储于cap结构中,然后就可以读取设备的关键属性。在此应用中,摄像头设备显示支持视频截取和流操作,但不支持读写操作。

3.3 设置图像采集格式

struct v4l2format fmt;

fmt.fmt.pix.width=640;

fmt.fmt.pix.height=480;

fmt.fmt.pix.pixelformat=V4L2PIXFMTYUYV;

ioctl(fd,VIDIOCSFMT,& fmt)

将fmt结构填入适当的值,然后通过传递VIDIOCSFMT命令参数对设备的图像采集格式、大小等进行初始化。在程序测试中显示此设备不能初始化为GTK能直接显示的RGB格式,因此在其后的图像处理中首先将YUYV格式转为RGB格式,这些内容将在文章的第五节详述。

3.4 内存映射初始化

在Video4Linux2下截取图像有2种方法:mmap内存映射方式和直接读取设备方式。在属性检验中可知此设备不支持读写操作,而且前者采用共享内存通信,不需要任何数据的拷贝,效率高,因此选用mmap内存映射方式,这也是程序设计中的一个难点,其用到的主要函数如下:

Ioctl (fd,VIDIOCREQBUFS,& reqbuf);

ioctl (fd,VIDIOCQUERYBUF,&buffer);

void *mmap (NULL,sizet len,int prot,int flags,fd,offt off);

ioctl (fd,VIDIOCQBUF,&buf);

ioctl (fd,VIDIOCSTREAMON,&type);

与最初的Video4Linux应用编程接口相比,新的接口最大的改变在于可自定义设备驱动缓存数量,在实际应用中大大提供了程序的性能。其主要步骤如下:首先,带VIDIOCREQBUFS命令参数的ioctl函数分配自定义的缓存数量,这在初始化中是必须的一步;然后,可以引入一个循环中,分别对各个缓存进行映射,其偏移量和缓存大小可在VIDIOCQUERYBUF命令参数的ioctl函数中定义;最后利用用mmap()函数将在设备缓存和应用程序所分配内存间建立映射,并返回应用程序内存的首地址,至此内存映射初始化完毕。

在内存映射完毕后,此时还不能开始进行图像采集,下面两个步骤提示系统将使用这些内存进行图像采集。首先,VIDIOCQBUF命令参数的ioctl函数将此空缓存加入等待输入缓存队列;在缓存加入等待输入队列后,调用1次VIDIOCSTREAMON命令参数的ioctl函数,由此可以正式使用这些缓存进行图像数据了。

4 YUYV格式与RGB格式的转换

显示器显示色彩的原理与彩色电视机一样,都是采用R(Red),G(Green),B(Blue)相加混色的原理:通过发射出3种不同强度的电子束,使屏幕内侧覆盖的红、绿、蓝磷光材料发光而产生色彩。这种色彩的表示方法称为RGB色彩空间表示,这也是多媒体计算机技术中用得最多的一种色彩空间表示方法。在本程序中使用的RGB24使用24位来表示1个像素,RGB分量都用8位表示,取值范围为0~255。

YUV是被欧洲电视系统所采用的一种颜色编码方法(属于PAL),其中“Y”表示明亮度,也就是灰阶值;而“U”和“V” 表示的则是色度,作用是描述影像色彩及饱和度,用于指定像素的颜色。与RGB视频信号传输相比,它最大的优点在于只需占用极少的频宽(RGB要求3个独立的视频信号同时传输)。YUYV是YUV格式的其中一种,YUV比例为4∶2∶2,它为每个像素保留Y分量,而UV分量在水平方向上每2个像素采样一次。一个宏像素为4个字节,实际表示2个像素。(4∶2∶2的意思为1个宏像素中有4个Y分量、2个U分量和2个V分量。)图像数据中YUV分量排列顺序如下:

Y0 U0 Y1 V0 Y2 U2 Y3 V2

前面提到摄像头只能初始化为YUYV图像格式,而在GTK显示区域中可以显示RGB格式的图像数据。因此在显示之前必须进行图像数据处理,将YUYV格式转换为RGB24,转换公式为:

R=1.164*(Y-16)+1.159*(V-128);

G=1.164*(Y-16)-0.38*(U-128)-

0.813*(V-128);

B=1.164*(Y-16)+2.018*(U-128)

5 图像采集模块设计

这个模块的进程主要有3个步骤:首先,VIDIOCDQBUF命令参数的ioctl函数将已填满图像数据的缓存清空出列;其次,此时与之映射的应用程序内存已经储存图像数据,可以对其进行图像数据处理操作,将YUYV格式转为RGB24格式,使用GTK函数将图像数据写入图像显示区域,显示播放出这一帧的图像;最后,将出列的空缓存重新加入等待输入队列,由此构成一个采集循环。

正如前面所提到的那样,GTK主循环在接管控制权后,将循环监听和响应事件或信号并选择返回或退出,而图像采集模块也需要循环地采集图像帧,一般来说这种情况下可以采用多线程编程的方法使主程序具有多个执行路线,同步运行两个循环。GTK库提供了一个更为简单的方法:使用空闲函数。每次通过GTK主循环后都将调用1次空闲函数(如果有),由此实现应用程序和GTK主循环的处理进程之间的共享,可以方便地在应用程序中进行数据更新、传送等,同时同步地处理GTK系统事件,如窗口发布、界面的同步刷新等。

在这个程序中正是应用这个方法,将采集模块注册为GTK空闲函数,每次通过GTK主循环后都将调用模块。在GTK主函数和采集模块中必须调用GTK提供的线程控制函数,这是由于空闲函数是在GTK主循环外即在GTK控制锁之外执行的。在某一时间只有1个线程能够使用GTK函数,因此必须保证在任何时候只有GTK主程序和采集模块之其一在使用GTK函数。在每个循环中,采集模块读取图像数据并写入图像显示区域,GTK主程序进行窗口的更新,最终实现实时连续地显示播放视频图像。

6 结 语

该程序在Linux系统环境下实现了使用USB摄像头采集视频图像并连续显示播放的功能,主要涉及使用了Video4Linux2应用编程接口和GTK函数库,以及一些Linux程序设计中基本的系统调用或标准库函数,在类Linux系统中具有良好的移植性。此外,本程序结构比较简单,组织清晰,可以方便地加入各种图像处理模块,进一步实现图像处理、识别等所需功能。

参考文献

[1]冯琪.小型无人直升机基于视觉的导航系统分析与设计[D].广州:华南理工大学,2005.

[2]罗沛.空中机器人视觉导航系统的研究与设计[D].广州:华南理工大学,2007.

[3]Syd Logan,战晓苏,王宁.Gtk+程序设计(C语言版)[M].北京:清华大学出版社,2002.

[4]阮秋琦,阮宇智,Gonzalez R C,等.数字图像处理[M].北京:电子工业出版社,2003.

[5]魏永明.Rubini A.Linux设备驱动程序[M].北京:中国电力出版社,2002.

[6]裘宗燕.Stroustrup B.C++程序设计语言[M].北京:机械工业出版社,2005.

[7]龙晋元.Richard W.Unix环境高级编程[M].2版.北京:人民邮电出版社,2006.

[8]Neil Matthew,Richard Stones,陈健,等.Linux程序设计[M].3版.北京:人民邮电出版社,2007.

[9]Anon.V4L2 API Specification[EB/OL].http://v4l2spec.bytesex.org/spec/book1.htm.2007.

[10]王永清,何波,王乾,等.Linux下基于ARM920T的USB摄像头图像采集[J].微计算机信息,2007(2):176-177.

[11]廖敬萍,马力.基于Linux的实时解决方案分析[J].现代电子技术,2006,29(19):107-109.

USB摄像头驱动程序 第5篇

近年来,随着科技的不断快速发展,精细、智能化农业生产技术成为农业机械化研究的热点[1],基于机器视觉技术的农田智能机械开发是各科研院所的主要研究方向。国内从20世纪90年代开始利用机器视觉技术进行水果的分级研究,近年来在农田视觉应用方面的研究也很广泛,如自动导航、杂草识别、病害判别及变量喷雾等。但目前还没有走出实验室的成型产品,其主要原因是视觉系统高成本且适应性差,只适用于科学研究,无法在田间农业生产上进行推广应用。

USB摄像头由于价格低、功耗小、与计算机连接方便等特点[2],目前已在工业、交通、医疗等行业有了广泛的应用,但在田间中的应用依然处于空白。为此,本文以廉价的USB摄像头作为图像采集单元,代替专业的视觉系统,从降低视觉系统的成本出发,对田间实时图像采集系统进行研究。

1 成像质量的主要影响因素

田间图像的成像质量直接影响到后续处理的效果及整体系统的成功率。成像质量的主要影响因素包括地面的不平度、光源、帧率、曝光时间、摄像头高度和倾角、行驶速度等。普通USB摄像头相对于专业的摄像设备,其曝光时间固定、拍摄时间不可调。因此,摄像头的帧率、光源、行驶速度这3个因素之间的相互作用尤为明显。

1.1 摄像头的帧率

摄像头帧率是指在1s时间内传输图片的数量,也可以理解为图形处理器每秒钟能够刷新几次,通常用fps表示。对于普通的USB摄像头,帧率高的较帧率低的曝光时间短,但帧率在150fps以上的摄像头要求设备接口的传输速率要高于通用USB2.0,常用的一般为30、60帧,少数120帧。本文从通用性出发,在田间动态采集中,从摄像头拍摄的视频流里每隔一定的时间抓取一张图片,为了保证抓取的图片质量清晰。传输稳定,摄像头的帧率选择以上3种进行对比试验。

1.2 光源、行驶速度

在机器视觉系统中,光照、行驶速度是影响整个图像采集过程的关键因素,直接关系到图像质量的好坏。光源分为自然光源和人工光源两种[3]。光照强度的强弱和摄像头快门曝光时间、行进速度有很大的关联。由于普通USB摄像头的快门速度不可调、曝光时间固定,当光照过强时,摄像头感光元件充电时间短、行进速度慢会导致图像过亮;过弱时,充电时间长、行进速度快,摄像头拍摄的图像过暗或拖尾模糊,而使图像质量变差。因此,合理的摄像头帧率、光源、行驶速度三维组合是田间图像采集的关键。

2 试验材料与方法

2.1 试验材料

本实验在温室大棚里进行,采集图像对象为白菜秧苗。采用的笔记本电脑配置为:主频2.6GHzCPU,Intel酷睿i5 3230M处理器、4G内存、1T硬盘、2GB显存。选用常用3种USB摄像头,分别是30帧(蓝色妖姬m2200)、60帧(谷客HD91S)、120帧(蓝色S8精钢);光源选用自然光照为正常、强(下午13:30左右)、弱(下午16:30左右);为了方便控制试验小车的行驶速度,选用速度可调的电瓶小车。

2.2 软件设计

图像采集、处理软件系统都是基于Microsoft公司的VC++6.0基础上使用MFC类库研发的,主要使用DirectShow开发包的自定义类CCaptureVideo来完成视频数据流的显示、读取[2,4]。为验证方法的可行性,对采集到的图像进行了实时灰度化及图像分割处理。

2.2.1 摄像头初始化程序设计

利用DirectShow开发包中的类库以及CCapture Video类来完成对摄像头的初始化工作,并使之在软件界面输出视频流。以下是初始化的部分VC代码:

2.2.2 单帧图像捕捉程序设计

获取单帧图像即是从视频流中捕捉某一帧图像存储到内存中或者物理存储设备上,利用实现的IsampleGrabberCB类的虚函数BufferCB来具体实现对单帧图像的捕捉[5]。以下是获取单帧图像并存至指定磁盘目录的部分重要VC代码:

2.2.3 软件的应用

应用程序界面分为预览区和控制单元,如图1所示。当程序启动以后,首先选定目标摄像头,点击加载按钮来实现初始化摄像头并将摄像头的视频流输出到上方的预览区;然后在控制单元区设置捕捉帧间隔时间和是否需要存储图片等设置,单击开始拍照按钮来定时捕捉单帧图像。

2.3 试验方法及试验指标

试验在温室大棚进行。将3种不同帧率的摄像头分别安装在可调速的电瓶车上,拍摄幅面为单行单株范围,利用C语言编程,在不同的行驶速度、光源条件下进行图像采集与实时处理,并进行保存。

采用USB摄像头作为图像采集单元的最终目标,是寻求一个最优组合,确保采集的图像质量。图像质量评价从方法上可分为主观评价法和客观评价法两种。图像质量的主观评价方法的优点是能够真实地反映图像的直观质量,评价结果可靠,无技术障碍;客观评价法具有耗时少及试验重复次数少等优点[6]。本试验的图片是在田间动态实时采集的,无原图进行参考比较,且客观评价法往往不适合不同图像之间清晰度的横向比较。因此,本文采用主观评价法,国际上已有成熟的主观评价技术和国际标准,如多媒体应用的主观评价方法,电视图像的主观评价方法。主观质量评分法又可以分为绝对评价和相对评价两种类型,其绝对评价是将图像直接按照视觉感受分级评分。表1列出了国际上规定的5级绝对尺度,包括质量尺度和妨碍尺度。对一般人来讲,多采用质量尺度;对专业人员来讲,则多采用妨碍尺度[7]。本文采用绝对评价尺度的方法。

评价的结果可用一定数量的观察者给出的平均分数求得。平均分数为

其中,Yi为图像属于第i类的分数;Ni为判定该图像属于第i类的观察者人数。为了保证图像主观评价在统计上有意义,参加评分的观察者至少应有20名,其中包括一般观察者和专业人员。

3 试验设计

3.1 试验安排及结果

试验考察因素为光源、摄像头的帧率、行驶速度。为了后续图像处理时方便,摄像头的倾角设置为使其光轴垂直地面,通过对比试验确定摄像头的高度为100cm,摄像头的帧率选择30、60、120帧,电瓶小车行驶速度选择0.75、1.25、1.75m/s,光源选择光照强度等级为强、正常、弱,形成三因素三水平表(如表2所示),采用正交设计方法安排试验[8]。为了避免人为主观因素造成的误差,本文对每组试验采集到的图像随机选择20张,选择20名观察者进行评分(包括一般观察者和专业人员),求出这20张图像的Y值,并用此平均值作为最终图像质量的评定指标,结果如表3所示。

3.2 试验因素对图像评价指标影响分析

3种试验因素对图像评价指标的影响如图2所示。由图2可以看出:摄像头帧率从30变到60、再到120的过程中,当帧率为60时图像质量最好。行驶速度对图像质量也有一定影响:在一定范围内,随着速度增加,图像质量效果也增加;到达一定值时,随着速度增加,图像质量效果降低。光照强度的强弱在不同程度上对图像质量也有一定的影响:当光照由强变正常时,图像质量效果逐渐增加;当光照由正常变弱时,图像质量效果降低。

3.3 试验结果分析

图3~图5分别是随机抽取的30、60、120帧摄像头采集的图像及实时处理的结果。由图3~图5中可以看出:在相同条件下,30帧/s的摄像头采集的图像轮廓较为模糊,有噪点;60帧/s的摄像头采集的图像清晰自然,无噪点现象;120帧/s的摄像头采集的图像处理后层次清晰度较差,有时拍出来的效果有散晕现象,图像不如60帧产品拍得清晰。

从表3可以看出:影响图像质量的主次顺序为摄像头帧率、行驶速度、光照强度;通过表3还可以得出最优组合为:A2B1C2,即光照正常、摄像头帧率为60帧、行驶速度为1.25m/s(4.5km/h)。由于此组合在实验设计的组合中,只需要再进行试验验证,验证结果如图6所示。

通过图6(a)的质量评价和图6(b)的分割结果,可以得出本试验选出的最优组合能满足田间动态实时采集的要求。

4 结论

1)通过基于C语言的采集处理程序,可以实现田间作物图像的动态提取,且能满足田间作业实时快速的要求,从采集到实现植物与土壤背景的分割只需要35ms。

2)从表2可以看出:空列即误差对试验有一定的影响,主要是考虑地面的不平度,易使小车突然产生一个加速度,导致摄像头发生抖动,从而造成图像质量下降。

3)普通USB摄像头作为田间图像采集单元,大大降低了成本且操作简单。对试验选出的最优组合(帧率60,行驶速度1.25m/s,光照正常)在实验大棚里进行了采集与试验,效果良好。本文把USB摄像头的应用引入田间,为后续的开发提供了基础和便利。

摘要:高成本是制约机器视觉系统在农田中推广应用的重要因素。为此,通过对农田视觉系统的分析,提出了采用普通的USB摄像头代替专用视觉系统作为田间图像采集单元,基于C语言自行开发程序控制摄像头完成图像的采集与处理的方案。试验表明:此方法操作简单、成本低廉,采集、处理一幅640×480的实时图像耗时3 5 ms以内,能有效地满足田间作业的实时性,为农田智能机械的成品化开发提供了新的思路。

关键词:农田,图像采集,USB摄像头,C语言程序

参考文献

[1]胡炼,罗锡文,曾山,等.基于机器视觉的株间机械除草装置的作物识别与定位方法[J].农业工程学报,2013,29(10):12-18.

[2]阮林波,曹锦云.基于USB摄像头的自动监控系统[J].计算机工程与设计,2004,25(6):988-989,995.

[3]陈丽君,赵凤芹.基于机器视觉的变量机械系统的关键技术[J].农机化研究,2005(6):21-23.

[4]周可,王桦,李春花.云存储技术及其应用[J].中兴通讯技术,2010(4):24-27.

[5]王光兴,李洪祚.基于DSP帧曝光图像采集系统[J].长春工业大学学报:自然科学版,2014,35(2):167-171.

[6]蒋刚毅,黄大江.图像质量评价方法研究进展[J].电子与信息学报,2010,32(1):219-226.

[7]刘书琴,毋立芳.图像质量评价综述[J].中国科技论文在线,2010,32(1):501-506,523.

USB摄像头驱动程序 第6篇

视频采集可将连续的模拟信号图像转换成数字视频,并按数字视频文件的格式保存。尽管人眼的分辨力较高,有较好的色彩区分和图像识别能力,但人眼的识别与区分功能也是有限的,一些图像对于人眼来说较为复杂。图像、图形是所有视觉信息的载体,而数字图像处理(Digital Image Processing)技术可以帮助人们更客观、准确地认识世界,通过图象增强技术,可以使模糊甚至不可见的图像变得清晰明亮,数字图像处理技术已经广泛深入地应用于科技发展的各个领域。

随着测控技术的不断发展,视频采集和数字图像处理成为测控技术中的重要一环,作为对被测对象的识别、分析的最佳手段,是工程人员需要掌握的核心技术之一。视频采集卡是视频采集工作中的主要设备,而目前视频采集卡成本普遍较高[1],加之数字图像处理难度较大,常常使得普通用户望而却步。

本文介绍一种基于NI公司提供的Lab VIEW图形化编程软件平台以及Vision Acquisition Software和Vision Development Module工具包,采用通用USB摄像头进行图像采集和图像处理的具体实现方法,以方便用户低成本、简便地获取所需要的图像信息。

1 建立基于 Lab VIEW 的图像采集平台

利用Lab VIEW对通用USB摄像头视频图像进行采集和处理的系统构成如图1所示。其中,通用USB摄像头安装后,可以在计算机的“设备管理器”的“通用串行总线控制器”中查看相关的USB摄像头信息。摄像头驱动软件一般为系统自动安装,特殊情况下需使用者自行手动下载安装。

基于Lab VIEW的图像采集系统中,NI公司提供的Lab VIEW图形化编程环境作为程序开发的基本平台。NI-VISA是一个用来与各种仪器总线进行通信的高级应用编程接口(API),包含VISA的全套驱动程序、开发包、相关文档及美国国家仪器公司(NI)提供的一个控制软件Measure- ment & Automation Explorer(MAX)。 安装了NI-VISA,Lab VIEW即可访问计算机上的设备和接口。IMAQ Vision是Lab VIEW的视觉开发工具包,是一个具有强大功能的函数库,提供了在Lab VIEW平台上进行图像 采集 、机器视觉 系统开发 时所需的 各类子程序[2,3]。

安装后,可在“视觉与运动”函数子选板下看到可用的函数和VI库,同时在“NI MAX”中可查看摄像设备是否已可以在Lab VIEW下调用[4]。IMAQ Vision模块中的IMAQ用于NI自己的摄像机,IMAQdx用于非NI的USB,1394,Gig E Vision视频设备 。 用于USB摄像头的NI-IMAQdx能够实现从任意具有Direct Show支持的USB成像设备上采集图像,可以选择一次或连续图像采集。VDM(Vision Development Module)用于图像处理,该工具包也需要单独安装。安装后,前面板Vision列表中会增加IMAQ视觉模块和机器视觉模块两个控件模块,后面板的“视觉与运动”中将增加图像处理和机器视觉两个模块。

通过调用IMAQ Vision和VDM下的相关函数和VI编写相应的图像采集和处理用户程序,控制通用USB摄像头抓拍或者连续采集图像,保存图像文件,并对图像进行压缩和灰度、二值化及增强等图像处理。可见,该系统硬件选用简单,侧重软件设计,且有工具包可以辅助编程,因此功能实现方便,开发周期短,成本低。

2 图像采集

2.1USB 摄像头图像抓取

USB摄像头图像抓取程序包括两个事件:一是抓取图像并输出到图像显示窗口;二是将抓取的图像存储到文件。程序执行的过程是首先打开所选择的摄像头,创建临时图像存储空间,启动图像抓取,如果拍照按钮没有按下,则将获取到的当前帧送图像显示窗口显示;如果拍照按钮按下,则将获取的当前帧以“.JEPG”格式保存到文件。后面板程序如图2所示,运行结果如图3所示。通过该方法能够快速地获得所需单幅图像并存储。

2.2连续视频图像采集

连续视频图像采集程序如图4所示。首先打开所选择的摄像头,创建临时图像存储空间,根据文件路径对话框所选择的文件创建“.AVI”文件,开启图像抓取,获取当前帧并送图像显示窗口显示,同时将获取的当前帧保存到“.AVI”文件。单击退出按钮,关闭摄像头,关闭“.AVI”文件,清空图像存储空间。连续视频图像采集运行结果如图5所示,通过该方法能够方便地获得连续的视频图像。

3 图像处理

3.1图像压缩

由数字化得到的一幅图像的数据量十分巨大,一幅典型的数字图像通常由640×480,1 024×768或更高个像素组成。如果是动态图像,则其数据量更大,因而图像压缩对于图像的存储和传输都十分必要。有两类压缩算法,即无损压缩和有损压缩[5]。最常用的无损压缩算法是通过取空间或时间上相邻像素值的差,再进行编码;有损压缩算法大都采用图像变换的方法,例如对图像进行快速傅里叶变换或离散的余弦变换。图像压缩国际标准JPEG和MPEG均属于有损压缩算法,前者用于静态图像,后者用于动态图像。

通过设置IMAQ AVI Create子VI的视频编码(Com-pression Filter)方式可实现视频图像压缩。AVI(Audio Video Interleaved)是微软公司推出的一种视频格式,可以采用不同的编码器进行视频压缩,一般情况下系统都带有一些编码器,只要输入正确的名称即可使用这些编码器进行视频压缩[6]。为了获取解码器名称,使用Lab-VIEW自带的IMAQ AVI Get Filter Names子VI实现,如图6所示,获取到的编码器名称如图7所示。

对于采集3 min的视频图像,不采用压缩算法文件大小约为2 GB;采用MJPEG Compressor压缩算法时文件大小约为400 MB;采用DV Video Encoder压缩算法时文件大小为100 MB。可见选择不同的压缩编码算法,得到的压缩比不同。

3.2图像处理

数字图像处理是通过计算机对图像进行去除噪声、增强、复原、分割、提取特征等处理的方法和技术。NI公司的Vision Development Module结合IMAQ Vision后,就形成了一套包含各种图像处理函数的功能库,它将400多种函数集成到Lab VIEW开发环境中,为图像处理提供了完整的开发功能[7]。这里通过图像灰度处理、图像二值 化处理 、图像增强 简要介绍 如何使用Lab-VIEW的Vision Development Module进行图像处理。

3.2.1图像灰度处理

将彩色图像转化成为灰度图像的过程称为图像的灰度化处理。利用IMAQ Extract Single Color Plane VI很容易实现图像的灰度化处理,程序如图8所示。首先为读取的图像文件创建临时图像存储空间,从图像文件中读取图像,一路直接送图像显示窗口,一路经图像类型转换VI,将RGB图像颜色空间转换成HSL图像颜色空间,然后经图像提取VI提取出灰度图像送灰度图像显示。其中用到的参数HSL色彩模式是工业界的一种颜色标准,是通过对色相(H)、饱和度(S)、明度(L)三个颜色变量的变化以及它们相互之间的叠加来得到各式各样的颜色[8]。这个标准几乎包括了人类视力所能感知的所有颜色,是目前运用最广的颜色系统之一。图像灰度处理结果如图9所示。

3.2.2图像二值化处理

图像的二值化处理是将图像上各点的灰度置为0或255,这样整个图像将呈现出明显的黑白效果。即将256个亮度等级的灰度图像通过适当的阈值选取而获得仍然可以反映图像整体和局部特征的二值化图像。将3.2.1中得到的灰度图像再经过图像阈值处理函数(IMAQ Threshold VI)即可得到 二值化图 像 。 程序如图10所示,运行结果如图11所示。

3.2.3图像增强

图像增强指按特定的需要突出一幅图像的某些信息,同时削弱或去除某些不需要信息的处理方法,是图像处理的最基本手段,是各种图像分析与处理时的预处理过程。图像增强的目的是通过对图像灰度作修正,改善图像的视觉效果,提供直观、清晰、适合于分析的图像。Lab VIEW通过IMAQ BCGLookup VI实现图像的增强,程序见图12。从图像文件中直接读取图像的灰度信息,并显示原图像的灰度图像,将灰度图像送给图像增强函数进行增强处理。图像增强运行结果见图13。

4 结语

NI-IMAQ能够从任一Direct Show成像设备上对图像进行采集,此类设备包括:USB摄像头、网络摄像头、显微镜、扫描仪和诸多消费者级的成像产品。用户可借助NI-IMAQ配置自身设备,利用Lab VIEW开发所需的图像采集处理软件,结合NI视觉开发模块,使用者可利用滤波器、二进制形态学、模式匹配和色彩检测等上百种图像处理工具分析图像。

除此之外,利用Lab VIEW实现的图像采集与处理还可以为工业检测、测量提供极其简便的操作及显示界面,缩减了利用其他编程语言所需的庞大工作量,这不仅降低了编程人员的工作时间,也提高了工业生产的效率并能有效降低其成本。

摘要:为了实现实时的图像采集与处理,利用通过基于Lab VIEW软件平台和NI-IMAQ Vision函数工具包,探讨如何通过通用USB摄像头进行图像采集和处理的方法。包括如何快速搭建软件平台、如何进行单一图像的抓取及图像的常规处理,灰度、二值和增强处理,以及如何获得连续的视频图像采集和压缩。该方法相比于其他图像获取与处理手段,其具有无法比拟的优势。它成本低廉,相对于其他语言的实现方法其编程具有极高的效率,并且该方法能满足一般工业、医用和民用需求。

USB摄像头驱动程序 第7篇

在多媒体教学普及的过程中,普遍存在如何引进现代化教学设备和老师们的课堂教学习惯有机结合的问题。目前老师们在做教学演示的过程中,往往需要守在计算机旁边,一边操作计算机一边进行讲解,需要重点强调的地方,还要不时地站起身来,指指点点,本来提供方便的多媒体演示设备,却把老师们丰富的课堂语言都束缚了。为了解决这个问题,本文设计并实现了一个基于USB摄像头的激光笔辅助教学系统,以便让老师可以通过激光笔在远处同计算机系统进行交互。

基于USB摄像头的激光笔辅助教学系统的实现原理是:首先通过USB摄像头拍摄到投影屏,并在USB摄像头捕捉到的图中检测到激光点的位置信息,然后通过跟踪来分析和识别激光点的轨迹,同时通过激光笔上的按键信息来共同实现激光笔与远程计算机的交互。在激光点的检测方法中,用到了不同的线索,如激光点的运动特征和模式特征[1,2]以及颜色特征[3]等。由于激光点的区域较小,模式特征不是很明显,易于受到噪声的干扰,而激光点的颜色特征在不同的使用环境中可以有比较大的变化,因此单纯使用颜色特征也不是很好的办法。文献[4]提出将激光点的颜色特征、运动信息和形状特征这几种线索融合起来进行激光点的检测,准确率确实得到了一定的提升,但是仍然存在漏检和误判的情况。本系统通过滤光片的使用,基本排除了噪声的干扰,使系统准确率得到大大的提升。CN101251784号专利公开了一种激光笔指示与光点轨迹识别方法[5],利用亮度信息从显示屏图像提取红色激光点,亮点识别原理与本文一致,但是由于使用的是固定枪式摄像头,安装调试不方便。文献[6]通过改变硬件方法实现点击功能,在普通激光笔上增加按键,接收器根据按钮发射频段的不同判断操作类型,做了很好的尝试,但是使用起来效果比较单一。文献[7,8,9]分别使用了不同方法来实现激光笔的互动,但都比较单一,不够完善。而对于激光点的行为描述上,文献[10]提到的激光笔互动系统使用起来非常复杂,而本文提到的系统专门制作了适用于激光点行为的硬件自制激光笔,使得基于USB摄像头的辅助教学系统使用起来更为方便。

1 系统综述

基于USB摄像头的激光笔辅助教学系统主要为在智能自然教学空间中授课的教师提供一种辅助工具,帮助他们在课程讲义上进行各种指示动作或轨迹绘制,以及远距离进行各种操作,从而使教学过程更生动,教师的行动更自由。为完成提供交互式教学场景的任务,系统的总体设计遵循方便、实用、效率的原则,使教师和学生都感到自然,使“黑板”具有更多特色。

基于USB摄像头的激光笔辅助教学系统由图像分析模块、屏幕显示模块及激光笔无线通信模块组成,其整体结构如图1所示。

教师通过激光笔这一交互工具,在显示屏幕上留下光点,通过红光滤光片及USB摄像头获取显示屏幕的信息,这样的视频信息送至授课主机,它通过亮点识别算法获取视频图像每一帧中的光点位置,通过坐标变换将亮点位置变换为自身的屏幕坐标位置,并进行轨迹绘制,放大镜操作或鼠标操作,结果通过投影或VGA线缆连接在显示屏幕上展示出来。除此之外,激光笔本身和授课主机通过无线网络连接,利用笔上的按钮控制整个系统的启动和中止,以及轨迹绘制,放大镜操作和鼠标操作之间的功能切换。系统逻辑流程如图2所示。

2 系统实现

2.1 图像采集

由于基于USB摄像头的激光笔辅助教学系统涉及到图像处理领域,摄像头采集到的图像的质量好坏直接关系到整个系统的实现效果,因此本系统的图像采集必须满足两个条件:(1)为了使亮点识别更为可靠,采集到的图像分辨率为640480,格式为RGB24;(2)为了使屏幕显示模块绘制轨迹连续,对亮点识别的实时性要求会比较高,至少得达到24fps。

目前生产的大部分USB摄像头都是WDM设备,使用比较陈旧的VFW方法采集的话存在许多弊端,比如采集速率非常低下,而Directshow使用WDM Capture Filter支持WDM卡,而使用另外一个VFW Capture Filter支持VFW卡。因此本系统采用Directshow采集方案。

图3描述了整个directshow采集USB摄像头的流程。首先从USB摄像头捕捉图像,然后通过AVI解码器得到我们需要捕捉的图像,接着进行采集并读取到图像分析模块中。

2.2 激光点检测方法

在激光点的检测方法中,一般依靠颜色特征、运动信息和形状特征这三种线索进行检测。一般来说,由于环境光照的影响以及激光点的模式特征不是很明显,分别用着三种线索进行检索的话,误检率和漏检率都比较高,即使是按文献[4]中提到的将这三种线索进行融合后,正确检测率也只有93%,而且实现也比较麻烦。考虑到市面上使用的激光点的波长为650nm,并且亮度很高,因此使用合适波长范围的带通干涉滤光片将周围环境不在波长通带范围内的光滤除可以大大增强激光点与环境的对比度,从而更加容易检测到激光点,并且可以大大提高识别精度和效率。

图4是不同型号的带通滤光片在同一教室环境下的激光点效果图,图4(a)的滤光效果非常明显,图4(b)还不能将激光点与背景区分开来。通过这两幅图比较说明,当滤光片通带达到一定范围的时候可以有很好的检测效果,可以很容易通过对图像像素点R通道值的大小来检测激光亮点,而且实验结果表明这种检测方法受周围环境光强的影响很小,有比较强的普适性。

亮点识别采用的算法为逐行扫描、隔行合并的算法,如图5所示。

2.3 屏幕校准方法

由于USB摄像头所采集到的图像信息中无法准确地只包含显示屏幕的信息而不含其他成分,且显示屏幕在视频图像中往往不是规则的四边形而是带有较小曲率的类似四边形,因此需要进行屏幕校准步骤,使图像信息中的坐标转换为显示屏幕对应的坐标。这种转换采用最小二乘法,公式如下:

其中,(XII,YII)T为转换后坐标,(XI,YI)T为转换前坐标,根据误差方程v=Ax-l,其中:l=(XII,YII)T-(XI,YI)T-AX0,X0为转换参数初值,则最小二乘法求解得到的转换参数的估计值为:

x=(ATPA)-1-ATPl=A+l,其中A+为A的广义逆,P为权矩阵,一般取P为单位矩阵。

本系统中的这种转换,需要的定位位置在系统启动时加以获取,并将转换矩阵固定,这样对每个坐标值的转换可在常数时间内完成。

2.4 激光笔硬件设计

为了更好地配合整个系统的运行,专门设计并制作了配套的激光笔,使得基于USB摄像头的激光笔辅助教学系统使用起来更为方便。

图6为硬件电路的整体,分为激光笔发射端和接收端两个部分。激光笔的功能部分包括6个按键和激光头,其中有一个按键指定用于控制激光头;按键信息经过编码后发射。接收端接收按键信息后解码,再转换成串行数据与PC进行通信。

图7为根据硬件电路原理图制作的激光笔发射端和接收端的硬件电路,通过发射端和接收端的应用,可以比较灵敏地实现整个系统的功能逻辑。

2.5 功能逻辑

目前根据智能教室的需求,我们定义并实现了如下三种功能模式:

(1) 绘图模式使用激光笔在屏幕上描绘,屏幕上出现对应的轨迹,同时可以通过激光笔上的按键实现幻灯片的上下翻页及擦除屏幕轨迹的操作。

(2) 鼠标模式 使用激光笔在屏幕上指示位置,屏幕上的鼠标发生移动,并可通过激光笔上的按键实现鼠标操作。

(3) 放大镜模式 使用激光笔在屏幕上指示位置,屏幕上对应的区域会进行局部放大,并且屏幕上的放大区域会随着光点发生移动。

由于激光笔发射端的按键比较丰富,因此能够比较方便且灵敏地实现上述三种功能模式以及他们之间的切换。

3 实验结果

基于USB摄像头的激光笔辅助教学系统已作为智能教室中智能人机交互的一部分在运行,并且即将做成相关产品出售。该系统运行于DELL Pentium 4,2.8GHz的CPU,1G内存和Windows XP上,系统美妙能处理25帧图像。

3.1 激光点检测效果

通过在不同背景条件下,使用者手持激光笔的位置,以及视频采集设备配置的不同,来评估算法的实际运行效率。

经过一些测试,获得了如表1所示的结果。

表1中的准确率以肉眼为判断依据,因此当亮点提取成功后,即使精确定位不准确,只要偏差不大就仍可认为属于合理范围内并极为准确。

比较编号1和2,或者5和6,发现使用者指示时所处的位置几乎不影响结果,激光点的指示性非常好。

比较1、2和3、4,发现摄像头的帧率非常接近算法的计算速度。由于常见摄像头的帧率上限大致为25fps,而在这个速度下使用激光笔作指示操作,获得的有效亮点数约为每秒20个,这是个高于肉眼区分速率的值。当系统运行在更好的计算机条件下,配置为Intel Core2 双核2.66GHz的CPU,2G内存和Windows XP系统,发现查全率完全能达到100%,即每秒有效光点数能达到25个。从肉眼来看,区分不出这种差别,这两种配置下,激光笔都能很流畅地在屏幕上进行绘图操作。

比较1、2、3、4和5、6,发现背景屏幕的大小将影响到有效点的判断,这是容易理解的,因为更大的屏幕将导致图像区域也变得更大,而算法的时间复杂度关于图像大小事线性的,因此相同时间内,可以获得的有效点数将随着图像的变大而减小。表中有效点数的减小并未按图像大小线性发展,这是由于在10.8大小的测试屏上测试时,采集到的图像中,目标屏幕以外的部分较大,而22大小的屏幕上测试时,该部分相对小得多。

3.2 激光笔功能测试

基于USB摄像头的激光笔辅助教学系统的功能测试效果如图8所示。

从图8中可以看出激光笔完全实现了预先设定的功能逻辑,在实际使用中能大大方便智能教室的教学,提高教学质量。

4 结 语

激光笔辅助教学具有如下有益效果:能够丰富教学环境,提供给教师一种更新的教学模式,可使教师的教学工作更连贯和自由;在其它环境中,通过远程指示特性,各种人机交互设备可被修改为远程指示性设备,避免人力直接接触屏幕,提高设备的可靠性。我们使用USB摄像头这一额外设备,成本相对较低,而对显示设备则没有过多要求,只需要使用激光笔能在设备上留下光点即可,不会对显示设备产生额外的耗损,另外所使用的激光笔在成本上和各种手写笔相差无几,统计下来总体成本还不到触摸式设备的十分之一。同时使用USB摄像头不仅仅使采集成本降低到一百元左右,也使这一系统具备了即插即用特性,从而使得这套系统不仅仅局限于教室这一场景,大大提高了这套系统的实用性。未来的工作是将摄像头和计算亮点的算法模块单独做成一个独立的嵌入式模块,降低用户端机器的负载。

摘要:实现一个利用激光笔与投影仪大屏幕进行互动的辅助教学系统。首先,通过USB摄像头检测激光亮点在屏幕上的位置。然后,通过计算机上的相应算法实现无线鼠标的功能,激光点轨迹的绘制,放大屏幕上的重要区域,清屏以及幻灯片的上下翻页功能。专门为这套辅助教学系统设计的激光笔使得教师在课堂里实现这种互动更为灵敏和连续。

关键词:远程人机交互,激光笔互动,亮点识别,轨迹绘制

参考文献

[1]Kristein C,Muller H.Interaction with a projection screen using a cam-era-tarcked laser pointer[C]//Multimedia Modeling Proceedings.Lau-sanne,Switzerland;IEEE Computer Society1,998:191-192.

[2]Kristein C.A System for human-computer interaction with a projectionscreen using a camera-tracked laser pointer[R].Technical Report,In-formatik VII,University of Dortmund,German,1998:686.

[3]Eckert R R,Moore J A.The classroom of the 21st century:The inter-action learning wall[J].Special Interest Group-Computer Human In-teraction Bulletin,2000,23(2):33-40.

[4]刘芳,林学誾,史元春.基于激光笔的远程人机交互技术[J].中国图象图形学报,2003,11(8):1356-1360.

[5]陈刚,鲁晨平,申瑞民.激光笔指示与光点轨迹识别方法:中国,101251784A[P].2008-08-27.

[6]Duncan Cavens,Florian Vogt,Sindney Fels,et al.Interacting with thebig screen:pointers to ponder[C]//Minneapolis,Minnesota,USA:ACM SIGCHI’02 Conference on Human Factors in Computing Sys-tems,2002:678-679.

[7]Shizuke B,Hisamatsu T,Takahashi,S,et al.Laser pointer interactiontechniques using peripheral areas of screens[C]//Proceedings of theworking conference on Advanced visual interfaces(AVI’06),Venezia,Italy,2006:95-98.

[8]Bandisch P,Cutrell E,Hinckley K,et al.Mouse ether:accelerating theacquisition of targets across multi-monitor displays[C]//Proc.ofCHI’04,ACM Press,2004:1379-1382.

[9]Hinckley K,Ramos G,Guimbretiere F,et al.Stitching:pen gesturesthat span multiple displays[C]//Proc of AVI’04,ACM Press,2004:23-32.

USB接口驱动程序开发 第8篇

随着微机技术水平的日益提高,传统的计算机接口已经不能满足当前计算机高速发展的需求,计算机业迫切需要一种新的通用型、高速总线接口,通用外设接口标准USB就应运而生。

USB,全称是Universal Serial Bus(通用串行总线),是一种新型的、基于令牌的、高速的串行总线标准,由Compaq、Microsoft、Intel、IBM等七家公司共同开发的,旨在解决日益增加的PC外设与有限的主板插槽和端口之间的矛盾而制定的一种串行通信标准[3],自1995年在Comdex上亮相以来已广泛地为各PC厂家支持。现在市场上几乎所有的P C机器都配备了U S B接口,USB接口之所以能够得到广泛支持和快速普及,是因为它具备以下优点:

1)终端用户的易用性

●为接缆和连接头提供了单一模型

●电气特性与用户无关

●自检外设,自动的进行设备驱动和设置

●外设可以动态连接,动态重置

2)广泛的适用性

●适应不同设备,传输速率从几kb/s到十几Mb/s

●在同一线上支持同步、异步两种传输模式

●支持对多个设备的同时操作

●可同时操作127个物理设备

●在主机和设备之间可以传输多个数据和信息流

●支持多功能的设备

●利用底层协议,提高了总线利用率

3)同步传输带宽

●确定的带宽和低延迟适合电话系统和音频的应用

●同步工作可以利用整个总线带宽

4)灵活性

●直接发送一系列指定大小的数据包,允许对设备缓冲器大小进行选择

●通过指定数据缓冲区的大小和执行时间,支持各种数据传输率

●通过协议对数据流进行缓冲处理

5)健壮性

●在协议中使用差错处理/差错恢复机制

●完全实时热插拔

●可以对有缺陷的设备进行鉴别

6)与P C产业的一致性

●协议的易实现性和完整性

●与P C机的即插即用体系结构一致

●与现存操作系统有良好衔接的接口

7)性价比

●以低廉的价格提供传输速率为1.5 M b/s的子通道

●将外设和主机硬件进行了最优化的集成

●促进了低价格外设的发展

●廉价的电缆和连接头

●运用商业技术降低成本

8)可升级性

●体系结构的可升级性支持在一个系统中同时存在多个USB主机控制器

正由于上述优点,开发USB接口的设备已成为一种发展趋势。然而随着USB技术的迅猛发展,传统的U S B 1.1接口已经不能适应用户的需求,于是在1 9 9 9年在Intel的开发者论坛大会上又提出了USB2.0技术,使得U S B不仅支持1.5 M b/s的“低速”,传输和12Mb/s的“全速”传输,而且支持480Mb/s的“高速”传输,比USB1.1标准快40倍左右,速度的提高对于用户的最大好处就是意味着用户可以使用到更高效的外部设备,而且具有多种速度的周边设备都可以被连接到USB 2.0的线路上,而且无需担心数据传输时发生瓶颈效应。

2 USB驱动程序设计

一个完整的USB系统包括主机系统和USB设备。所有的传输事务都是由主机发起的。一个主机系统又可以分为以下几个层次结构,如图1所示。

U S B总线接口包括U S B主控制器和根集线器,其中USB主控制器负责处理主机与设备之间电气和协议层的互连,根集线器提供USB设备连接点。USB系统使用USB主控制器来管理主机和USB设备之间的数据传输,另外它也负责管理USB资源,如带宽等。应用软件不能直接访问U S B设备硬件,而通过U S B系统和USB总线接口与USB设备进行交互[1]。

U S B设备包含一些向主机软件提供一系列U S B设备的特征和能力的信息的设备描述符,用来配置设备和定位USB设备驱动程序。这些信息确保了主机以正确的方式访问设备。通常,一个设备有一个或多个配置(C o n f i g u r a t i o n)来控制其行为。配置是接口(I n t e r f a c e)的集合,接口指出软件应该如何访问硬件。接口又是端点(endpoint)的集合,每一个与USB交换数据的硬件就为端点,它是作为通信管道的一个终点。图1显示了一个多层次结构的通信模型,它表明了端点和管道所扮演的角色。

2.1 USB驱动程序结构

1)USB驱动程序体系结构

运行在核心态的USB驱动程序是基于WIN32驱动程序模型WDM(Windows Driver Model)的,它采用分层驱动程序模型,由USB总线驱动程序和USB功能驱动程序两部分组成,总线驱动程序由操作系统提供,用户只需要编写相应的功能驱动程序即可[2]。

2)处理流程

因为I/O管理器把每一个设备对用户程序都抽象成文件,所以用户程序通过调用文件操作API函数就可以实现与驱动程序中某个设备的通信。

用户程序发送的请求由I/O管理器转换为具有不同主功能代码的IRP(I/O请求包)发送给功能驱动程序。功能驱动程序接收该IRP,在回调程序中根据IRP中包含的具体操作代码,构造相应的U S B请求,把它放到一个新的IRP中,并把这个新的IRP传递给USB总线驱动程序。USB总线驱动程序根据IRP中所包含的USB请求块执行相应操作,再将操作结果通过IRP返还给功能驱动程序,功能驱动程序接收此IRP,将操作结果通过IRP返还I/O管理器。最后,I/O管理器将此IR P中的操作结果返回给应用程序。至此,应用程序对USB设备的一次I/O操作完成,其处理流程如图2所示。

3 USB设备驱动程序中关键代码实现

下面是以开发的A R M读写驱动程序为例,介绍U S B驱动程序中几个关键例程的实现。本驱动程序的主要功能是控制USB设备上的ARM并对ARM板进行读写操作。

1)初始化函数Driver Entry()

设备驱动程序与应用程序不同,没有main()或Win Main()函数,而是有一个名为Driver Entry()的入口函数,它通常完成一些初始化工作。当设备驱动程序被加载时,操作系统调用这个入口。

2)创建设备函数Add Device()

大多数的PDO都是在Pn P管理器调用该程序入口点时被创建的。插入新设备后,系统启动时,总线枚举器会搜索总线上的所有设备,自动寻找并安装设备的驱动程序,并由驱动程序中的处理Pn P功能模块自动处理Add Device()。本程序使用Create Device()函数创建设备对象,再使用Register Devicelnterface()函数将设备组成一个特定的设备接口,然后通过Attach Device To Device Stack()函数关联设备栈。

3)ARM的传输处理函数Usb Transmit()

该函数是实现本驱动程序功能的关键,它用来与ARM进行通信。分析发送的请求数据后根据命令的具体含义对ARM进行读写操作。应用层通过调用标准的AR M板函数来发送I/O请求。

4 结束语

随着支持USB的个人电脑的普及,大量支持USB接口外设的不断涌现,以及USB技术的发展和不断完善,因此基于USB驱动程序的开发也将成为这一发展趋势的重中之重。本文介绍了USB的通信模型,分析了基于WDM的USB驱动开发的关键所在,结合ARM驱动程序开发介绍了DDK开发环境的构建,最终结合实际系统完成了基于DDK的USB接口WDM驱动开发和调试。

参考文献

[1]盖素丽,常青.USB接口的驱动程序开发[J].河北省科学院学报,2005,(6):18-19.

[2]王志强,孙书鹰,孙世宇.USB设备驱动程序开发技术研究[J].中文核心期刊《微计算机信息,》2006,22(1):57-58.

相关文章
表演人才范文

表演人才范文

表演人才范文(精选11篇)表演人才 第1篇六七岁至十一二岁是学龄初期, 即相当于儿童接受小学教育的年龄。这一时期少儿的主要行为活动是学...

2
2025-09-20
保安班长月总结

保安班长月总结

保安班长月总结(精选6篇)保安班长月总结 第1篇篇一:保安班长年终总结个人总结光阴似箭日如梭,转眼间半年已经过去。回顾我们保安队在近...

1
2025-09-20
班主任有关工作培训心得

班主任有关工作培训心得

班主任有关工作培训心得(精选15篇)班主任有关工作培训心得 第1篇20**年8月我有幸在市电大参加了“仙桃市第一期小学骨干班主任高级研修班...

1
2025-09-20
部编版一年级四季教案

部编版一年级四季教案

部编版一年级四季教案(精选6篇)部编版一年级四季教案 第1篇《四季》文清路小学 刘明霞教学目标:1、认识 9个生字和言字旁,虫字旁和折...

1
2025-09-20
办公室文秘的岗位职责有哪些

办公室文秘的岗位职责有哪些

办公室文秘的岗位职责有哪些(精选18篇)办公室文秘的岗位职责有哪些 第1篇1、在董事会的领导下主持办公室的全面工作,负责办公室的日常工...

3
2025-09-20
八年级上册第1课鸦片战争

八年级上册第1课鸦片战争

八年级上册第1课鸦片战争(精选12篇)八年级上册第1课鸦片战争 第1篇《鸦片战争》教学设计【教学目标】1、英国向中国走私鸦片及危害;林则...

2
2025-09-20
表面粗糙度测量仪的工作原理

表面粗糙度测量仪的工作原理

表面粗糙度测量仪的工作原理(精选10篇)表面粗糙度测量仪的工作原理 第1篇表面粗糙度测量仪的工作原理分析及其改进方案阳旭东(贵州工业大...

1
2025-09-20
宾馆改造可行性报告

宾馆改造可行性报告

宾馆改造可行性报告(精选8篇)宾馆改造可行性报告 第1篇第一章 总论1.1 项目名称及承办单位项目名称:宝地宾馆改扩建项目 承办单位:...

1
2025-09-20
付费阅读
确认删除?
回到顶部