(计算机软件与理论专业论文)车牌识别技术的研究.pdf_第1页
(计算机软件与理论专业论文)车牌识别技术的研究.pdf_第2页
(计算机软件与理论专业论文)车牌识别技术的研究.pdf_第3页
(计算机软件与理论专业论文)车牌识别技术的研究.pdf_第4页
(计算机软件与理论专业论文)车牌识别技术的研究.pdf_第5页
已阅读5页,还剩64页未读 继续免费阅读

(计算机软件与理论专业论文)车牌识别技术的研究.pdf.pdf 免费下载

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

摘要 车牌识别( l p r ) 系统是现代智能交通管理重要的一部分,是基于现 代交通的快速发展的需求而成的。从技术的角度讲,车牌识别系统是一个 涉及了数字图像处理、计算机视觉、模式识别和人工智能等多个领域的综 合系统。研究工作主要由以下四部分组成: 1 移动车辆检测。应用d i r e e t s h o w 开发包对视频进行截取,将截取到 的图片与背景进行差分运算,应用闽值检测车辆。实验结果表明 该方法能够检测出视频中的移动车辆。 2 车牌定位。车牌识别技术关键的一部分。应用基于颜色的车牌定 位的方法,即在传统的投影分析方法的基础上结合h s v 颜色空间 中的h 信息,将此作为车牌的特征,从而截取到车牌。实验结果表 明该方法与传统的方法相比,提高了准确率。 3 字符分割。在车牌定位的基础上,字符分割直接会影响到字符识 别的准确性。采用投影分析法,对车牌进行扫描,找出波谷的位 置,并利用先验知识,采用阈值分割方法将单个字符分割出来。 4 字符识别。整个系统的核心部分,包括汉字、字母和数字的识别。 针对汉字,提取其特征,并应用相似度检测法对汉字进行识别。 针对字母和数字,分别采用多级分类器和神经网络对其进行识别。 实验结果表明,用神经网络的方法进行识别取决于样本的个数及 质量,而多级分类器识别效果较好。 基于上述研究工作,设计、实现了一个动念车牌识别系统,该系统能 检测出移动车辆,并且进行准确定位和分割。从识别效果看,数字和字母 的混合识别还需要进一步的改进。 关键字:d i r e c t s h o w , 车辆检测,车牌定位,字符分割,字符识别特 征提取,多级分类器,神经网络 a b s t r a c t t h el i c e n s ep l a t er e c o g n i t i o ns y s t e mi so n ei m p o r t a n tp a r to ft h em o d e m i n t e l l i g e n c et r a f f i cm a n a g e m e n t ,w h i c hi sp r o d u c e da c c o r d i n gt ot h e r e q u i r e m e n to f t h em o d e mt r a f f i cd e v e l o p m e n t i nt h ev i e wo f t h et e c h n o l o g y , t h el p rr e s e a r c hi si n t e g r a t i o ni n v o l v e dt h ed i g i t a li m a g e p r o c e s s i n g ,c o m p u t e r v i s i o n ,p a t t e mr e c o g n i t i o na n dh u m a ni n t e l l i g e n c ea n ds oo n t h er e s e a r c hw o r k o f t h et h e s i si n c l u d e st h ef o l l o w i n gf o u rp a r t s : 1 t h ed e t e c t i o no f t h em o b i l ev e h i c l e si so n ep a r to f t h ew o r ko f t h et h e s i s t h ep r e v i o u sl p r p r o c e s s e st h es t a t i ci m a g e s t h et h e s i sa i m sa to n e v i d e ow h i c hi n c l u d e st h ev e h i c l e s ,f o rt h ea i mo f d e t e c t i n gt h em o b i l e v e h i c l e sq u i c k l y , w em a k eu s eo f t h ed i r e c t s h o wd e v e l o p m e n tb a c k a g e t og r a bt h ei m a g ef r o mt h ev i d e o ,t h e nw em i n u st h ec u r r e n ti m a g ef r o m t h eb a c k g r o u n di m a g et od e t e c tt h ev e h i c l e s i no r d e rt og r a bq u i c k l nw e o n l yu s eo n ep a r to f t h eg r a yv a l u eo f t h eb a c k g r o u n di m a g e ,t h e nw ec a n g e tt h em o b i l ev e h i c l e sf r o mt h ev i d e o 2 t h el i c e n s ep l a t el o c a t i o ni so n ei m p o r t a n tp a r to f t h el p r t h et h e s i s m a k e su s eo f o n en e wt e c h n o l o g yb a s e do nc o l o r , w h i c hm a k e su s eo f t h eh u ei n f o r m a t i o no f t h ec o l o rm o d e lo f h s vb a s e do nt h et r a d i t i o n a l p r o j e c t i o nm e t h o d t h e nw eu s et h ei n f o r m a t i o na st h ec h a r a c t e ro f t h e p l a t ea n dl o c a t et h ep l a t ec o r r e c t l y t h ee x p e r i m e n t a lr e s u l t ss h o wt h a ti t i sm o r ee f f i c i e n tt h a nt h ep r e v i o u sm e t h o d s 3 c h a r a c t e rs e g m e n t a t i o na f f e c t st h ep r e c i s e n e s so ft h ec h a r a c t e r r e c o g n i t i o nd i r e c t l ya f t e rl p l t h et h e s i sa d o p t st h ep r o j e c t i o nm e t h o d , s c a n n i n gt h ep l a t ew h i c hh a sb e e ne x t r a c t e d ,f i n d i n gt h el o w e rp a r to ft h e w a v e ,m a k i n gc e r t a i no n er i 曲tk e yv a l u ea n dt h es i n g l ec h a r a c t e ri s p i c k e do u t 4 c h a r a c t e rr e c o g n i t i o ni st h ek e r n e lp a r to ft h ew h o l es y s t e m ,w h i c h i n c l u d e st h er e c o g n i t i o no f t h ec h i n e s ec h a r a c t e ll e t t e ra n d d i g i t f o r c h i n e s ec h a r a c t e lt h et h e s i se x t r a c t st h ec h a r a c t e r so f e v e r yc h a r a c t e l a n dm a k e su s eo f t h ed e t e c t i o no f t h es i m i l i t u d ed e g r e et or e c o g n i z et h e c h a r a c t e nf o rl e t t e ra n dd i g i t ,w em a k eu s e o f t e m p l a t em a t c h i n g t e c h n o l o g ya n db p n e u r a ln e t w o r k st e c h n o l o g yt of i n i s ht h er e c o g n i t i o n t h ee x p e r i m e n t a lr e s u l t ss h o wt h a tt h et e m p l a t em a t c h i n gw o r k sb e t t e r t h em o b i l ev e h i c l el p r s y s t e mi sd e s i g n e da n di m p l e m e n t e db a s e do nt h e r e s e a r c hw o r ko ft h ea b o v e t h es y s t e mc a nd e t e c tm o s tm o b i l ev e h i c l e sa n d l o c a t ea n ds e 粤n e n tt h el i c e n s ep l a t es a t i s f a c t o r i l y t h er e c o g n i t i o nr e s u l t ss h o w t h a td i g i ta n dl e t t e rr e c o g n i t i o nh a ss o m e s p a c et oi m p r o v e k e yw o r d s :d i r e c t s h o w , d e t e c t i o no f v e h i c l e ,l o c a t eo f t h el i c e n s ep l a t e , c h a r a c t e rs e g m e n t a t i o n ,c h a r a c t e r r e c o g n i t i o n ,c h a r a c t e re x t r a c t i o n ,t e m p l a t e m a t c h i n g ,n e u r a ln e t w o r k s i i i 西北大学学位论文知识产权声明书 本人完全了解学校有关保护知识产权的规定,即:研究生在校攻读学位期 间论文工作的知识产权单位属于西北大学。学校有权保留并向国家有关部门或机 构送交论文的复印件和电子版。本人允许论文被查阅和借阅。学校可以将本学位 论文的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描等 复制手段保存和汇编本学位论文。同时,本人保证,毕业后结合学位论文研究课 题再撰写的文章一律注明作者单位为西北大学。 保密论文待解密后适用本声明。 学位论文作者签名:亟盘 指导教师签名j 砷o f 年f 月纠自如易年易月日 西北大学学位论文独创性声明 本人声明:所呈交的学位论文是本人在导师指导下进行的研究工作及取 得的研究成果。据我所知,除了文中特别加以标注和致谢的地方外,本论文 不包含其他人已经发表或撰写过的研究成果,也不包含为获得西北大学或其 它教育机构的学位或证书而使用过的材料。与我一同工作的同志对本研究所 做的任何贡献均己在论文中作了明确的说明并表示谢意。 学位论文作者签名: 甄兼 卫驴护年月2 f 日 第一章绪论 近年来,随着交通现代化的发展要求,汽车牌照自动识别技术已经越来越受 到人们的重视。车牌识别系统集中了先进的光电、计算机、图像处理、模式识别、 远程数据访问等技术,实现对监控路面过往的每一辆机动车的特征图像和车辆全 景图像进行连续全天侯实时记录,计算机根据所拍摄的图像进行牌照自动识别。 因此,该系统可以应用于路桥关口,实现对过往车辆的不停车收费,除此之外, 车牌识别系统还可以应用在以下几个领域: 交通监控。利用车牌识别系统的摄像设备,可以直接监视相应路段 的交通状况,获得车辆密度、队长、排队规律等交通信息,防范和 观察交通事故。 流控制指标参数的测量。该系统能够测量和统计很多交通流指标参 数,如总的服务效率,总行程时间,总的流入量和流出量,车型及 车流组成,日车流量,小时分钟车流量,车流高峰时间段,平均 车速,车辆密度等,这为交通诱导系统提供必要的交通流信息。 公路上的事故自动测报。这是由于该系统能够监视道路情况和测量 交通流量指标,能及时发现超速、堵车、排队、事故等交通异常现 象。 路费交纳、安全检查、运营管理实行不停车检查。根据识别出的车 牌号码从数据库中调出该车档案材料,可发现没有及时交纳养路费 的车辆。另外,该系统还能发现无车牌的车辆。若同车型检测器联 用,还可迅速发现所挂车牌与车型不符的车辆。 车辆定位。由于能自动识别车牌号码,因而极易发现被盗车辆,以 及定位出车辆在道上的行驶位置,这为防范、发现和追踪车辆的犯 罪,保护重要车辆的安全有重大作用,从而对城市治安及交通安全 有重要的保障作用。 ) ) ) ) ) q q 1 车牌识别系统的组成和工作原理 基于p c 的车牌识别系统是利用通过某路段的汽车前视或后视图像, 完成车牌的自动定位与识别。流程图如下所示: 图1 - 1 车牌识别系统的原理流程图 系统的工作原理:当车辆通过检测区域时,检测装置将车辆的通过信号 传送到图像采集设备;图像采集设备采集车辆图像,并将图像传送到计算机; 计算机对车牌进行自动定位和识别并将识别结果送至监控中心或收费所等 应用场所。 系统的核心部分为车辆检测、图像预处理、检测定位、自动目标识别。 ( 1 )车辆检测。利用背景差的方法对视频中的车辆进行检测。这部分的主 要任务是判断是否有过往车辆,如果有,则截取该帧图片为后继定位 作准备,否则继续进行判断。 ( 2 ) 图像预处理。首先将输入的彩色图像提取色彩信息,并且进行灰度化。 随后在灰度图像上利用滤波算子进行滤波处理,并且生成一个门限, 将滤波后的图像转化成为二值图像,对二值图像中的噪声还要进行消 除。 ( 3 )检测定位。在预处理得到的二值图像中进行区域搜索,寻找出具有车 牌特征的侯选区域。根据实际车牌的特征找出真正的车牌,然后交给 后继模块进行处理。 ( 4 )自动目标识别。在找到的车牌中,进行字符分割,特征提取,模板匹 配,进而得到识别的字符。 2 车牌识别技术的理论背景 车牌识别技术的任务是处理、分析摄取的视频流中复杂背景的车辆图像, 定位分割牌照,最后自动识别汽车牌照上的字符。车牌识别技术所涉及的研 究方向较多,主要有数字图像处理、计算机视觉、模式识别等。 数字图像处理就是将图像转化成为一个数字矩阵存放在计算机中,并采 用一定的算法对其进行处理。数字图像处理的基础是数学,最主要的任务就 是各种算法的设计和实现。目前数字图像处理技术已经在许多不同的领域得 到重视,并取得了巨大的成就。根据应用领域的不同要求,可以将数字图像 处理技术划分为许多分支,其中比较重要的分支有:图像增强与复原、图像 编码、图像分割与特征提取、图像分析、图像隐藏。 计算机视觉是研究用计算机来模拟生物外显或宏观视觉功能的科学技 术。计算机视觉系统的首要目标是用图像创建或恢复现实世界模型,然后认 识现实世界。计算机视觉的应用范围非常广泛,从医学图像到遥感图像,从 工业检测到文件处理,从毫微米波到多媒体数据库,等等。可以说,需要人 类视觉的场合几乎都需要计算机视觉。应该指出来的是,许多人类视觉无法 感知的场合,如精确定量感知、危险场景感知、不可见物体感知等,计算机 更突出其优越性。车牌识别技术主要用到计算机视觉的二值图像分析、区域 分板、图像预处理、边缘检测、纹理等部分。 模式识别是研究用机器代替人去识别、辩识客观事物的学科。识别的对 象可以是文字、声音、图像等具体对象,也可以是状态、程度等抽象对象, 这些对象与数字形式的对象相区别。模式识别的方法有两种,一种是统计决 策方法,一种是句法方法。几十年来,模式识别研究取得了大量的成果,在 很多方面取得了成功的应用。但是,由于模式识别涉及到了很多的问题,现 有的理论和方法对于解决这些问题还有很多不足之处。 3 国内外发展状况 从2 0 世纪9 0 年代初,国外的研究人员就已经开始了对汽车牌照识别的 研究。以色列h i t e c h 公司的s e e c a rs y s t e m 系列,新加坡o p t a s i a 公司的 v l p r s 系列都是较成熟的产品。其中v l p r s 产品主要适合新加坡的车牌, h i t e c h 公司的s e e c a rs y s t e m 有多种变形的产品来分别适应某一个国家的 车牌。s e e c a r c h i n e s e 系统可以对中国大陆的车牌进行识别,但存在很大的 缺陷,而且不能识别车牌中的汉字,另外日本、加拿大、德国、意大利、英 国等各个西方发达国家都有适合本国车牌的识别系统。 国内在9 0 年代也开始了车牌识别的研究。目前比较成熟的产品有中科院 自动化研究所汉王公司的“汉王眼9 j * 9 亚洲视觉科技有限公司、深圳吉通电 子有限公司、中国信息产业部下属的中智交通电子有限公司等也有自己的产 品。另外西安交通大学的图像处理和识别研究室、上海交通大学的计算机科 学和工程系、清华大学人工智能国家重点实验室、浙江大学的自动化系等也 做过类似的研究。 4 车牌识别技术中的难点 车牌识别系统在实验室里已经取得了令人满意的效果,但很难应用于实际工 程中,这是因为实验室的环境是处于理想状态的,而在自然环境里,由于受到天 气等因素的影响,识别率很难达到要求。我们大致把这些因素归纳为三类: ( 1 ) 汽车牌照本身的特征 牌照缺乏统一的标准。根据中华人民共和国公共安全行业标准对机动车 辆牌照的有关规定,车牌的规格、颜色和适用范围各有不同。由于缺乏 统一的标准,使得车牌识别过程中字符的分割难度较大,缺乏统一的模 式规则的指导作用。 牌照的质量无法保证。有些牌照被污损,而有些牌照的字符模糊不清, 对光线的散射性不好,这些不确定性极大地影响了识别的准确率。 车牌附近环境恶劣。车牌附近往往有复杂的外形或挡车器等,不利于车 牌的定位和分割。 ( 2 ) 外部环境的特征 外界光照条件各不相同,白天和晚上光照不同。光照对图像质量影响很 大。不同的光照角度,对车牌光照的不均匀度影响也较大。不同时间, 不同气候条件,以及背景光、车牌反光程度决定了车牌区域的亮度特征。 外界背景的复杂程度也影响着车牌的定位准确率。背景中与车牌区域特 征相似区域的大小反映了背景的噪声程度。例如与车牌字符相似的背景 远处的广告语容易影响车牌的粗定位。 ( 3 ) 车牌识别系统应用方案的特征 不同实际工程其摄像方位和角度不一样。实际工程中摄像方位相对于车 辆行驶的方向一般是正上方、左侧和右侧,摄像角度一般在1 5 0 。一3 0 0 之间。相对来说,摄像角度越小,车牌在平面图像中变形越小,识别效 果越好。摄像方位和角度对车牌字符分割影响较大,对车牌校正的方法 的校正能力要求也更高了。 光线较暗时,不同的人工光照角度、方位和亮度对车牌识别系统影响也 不一样。尽管规范车牌对光的散射能力较强,但人工光照的方位角度不 同时,也会影响车牌的亮度。亮度不均匀对车牌照二值化算法的适应性 提出了更高的要求。 不同的实际工程,图像的分辨率要求也不同。分辨率大小影响车牌识别 系统的识别速度和字符的识别率。o c r 中字符的像素分辨率一般为 3 2 * 3 2 ,而车牌识别系统字符的分辨率一般在1 2 1 2 和2 4 * 2 4 之间。分辨 率过高时,整个识别系统的处理时间会明显增多,特别是在车牌分割, 车牌二值的处理中时问会显著增加。分辨率过低,字符识别率会下降, 字符中汉字二值化效果较差,车牌识别系统的识别率会下降。 总之,车牌识别系统的研究由于受到多方面的限制,其技术还存在着一些不 足,但是现代智能交通的发展,使其具有巨大的应用潜力。相信随着研究的不断 深入,车牌识别技术肯定会逐步走向成熟。 5 本文的章节安排 本文对车牌识别系统的主要步骤进行了详尽的探讨和研究,论文的主要 内容安排如下: ( 1 ) 第二章介绍了d i r e c t s h o w 截图技术以及基于背景的车辆检测方法。包 括三种截图方法,还介绍了如何在恰当的时间截取含有车牌的车辆。 ( 2 ) 第三章介绍了车牌定位技术。首先介绍我国汽车牌照的特点,然后研 究了传统的车牌定位方法,最后给出了本系统采用的定位算法。 ( 3 ) 第四章介绍了字符分割算法。首先介绍了字符分割前的图像的预处理 的方法,然后研究了现有的字符分割算法,在此基础上,给出了本系 统采用的特殊算法。 ( 4 ) 第五章介绍了字符识别的方法。深入研究了基于特征的匹配方法和神 经网络的方法,并使用了多级分类器进行实验。 最后,对本文的工作进行了总结,并指出了该系统的不足和需要进一步 改进的地方。 第二章视频截取 1 d i r e c t s h o w 简介 d i r e c t x 软件开发包是微软公司提供的一套在w i n d o w s 操作平台上开发高性 能图形、声音、输入、输出和网络游戏的编程接口。微软将d i r e c t 3 ( 定义为“硬 件设备无关性”,即使用d i r e c t x 可以用与设备无关的方法提供设备相关的( 高) 性能川。 d i r e c t s h o w 是d i r c c t x 大家族中的一员,它为在w i n d o w s 平台上处理各种格 式的媒体文件的回放、音视频采集等高性能要求的多媒体应用提供了完整的解决 方案。 e 三 图2 - 1d i r e c t s h o w 系统 d i r e c t s h o w 系统位于应用层中,使用一种q 做f i l t e rg r a p h 的模型来管理整 个数据流处理过程;参与数据处理过程的各个模块叫做f i l t e r ;各个f i l t e r 在 f i l t e rg r a p h 中按照一定的顺序连接成一条流水线协同工作。 按照功能来分,f i l t e r 大致分成3 类:s o u r c ef i l t e r s 、t r a n s f o r mf i l t e r s 和 r e n d e r i n gf i l t e r s 。s o u r c ef i l t e r s 主要负责获取数据,数据源可以是文件、因 特网计算机里的采集卡( w d m 驱动的或v f w 驱动的) 数字摄像机等,然 后将数据往下传输;t r a n s f o r mf i l t e r s 主要负责数据的格式转换,例如数据流 分离合成、解码编码等,然后将数据继续往下传输;r e n d e r i n gf i l t e r s 主要 负责数据的最终去向,将数据送给显卡、声卡进行演示,或者输出到文件进 行存储。 2 d i r e c t s h o w 开发过程 第一个阶段: 创建一个f i l t e rg r a p hm a n a g e r 组件; 第二个阶段: 根据实际的应用,创建一条完整的f i k e r 链路; 第三个阶段: 调用f i l t e rg r a p hm a n a g e r 上( 或者直接在某个f i l t e r 上) 的各个接口方 法进行控制,并且完成f i l t e r g r a p h m a n a g e r 与应用程序的事件交互。比如调 用i m e d i a c o n t r o l 接口方法控制f i l t e rg r a p h 的状态转换。 3 d i r e c t s h o w 截图 总共有三种方法: 3 1 使用i b a s i c v i d e o :g e t c u r r e n t l m a g e 接口方法 代码如下; b o o ls n a p s h o t b i t m a p ( i b a s i c v i d e o + p b a s i c v i d e o ,c o n s tc h a r4 0 u t f i l e ) i f ( p b a s i c v i d e o ) l o n gb i t m a p s i z e = o : i f ( s u c c e e d ( p b a s i e v i d e o 一 g e t c u r r e n t i m a g e ( & b i t m a p s i z e ,0 ) ) ) b o o lp a s s = f a l s e ; u n s i g n e dc h a r b u f f e r = n e wu n s i g n e dc h a r b i t m a p s i z e ; i f ( s u c c e e d ( p b a s i c v i d e o 一 g e t c u r r e n t l m a g e ( & b i t m a p s i z e ,( 1 0 n g + ) b a r f e r ) ) ) b i t m a p f i l e h e a d e r h d r ; l p b i t m a p i n f o h e a d e r l p b i ; 8 l p b i = ( l p b i t m a p i n f o h e a d e r ) b u f f e r ; i n tn c o l o r s = l 2 5 6 ) n c o l o r s = 0 ; h d n b t t y p e = ( ( w o r d ) ( m a d d f i l t e r ( p g r a b b e r f , l ”s a m p l e g r a b b e r ) ; i f ( f a i l e d ( h r ) ) r e t u r na nc i t o r ) i s a m p l e g r a b b e r4 p g r a b b e r = n u l l ; p g r a b b e r f 一 q u e r y i n t e r f a c e ( i i d _ i s a m p l e g r a b b e r , ( v o i d ”。) & p g r a b b e r ) ; ) ( 2 ) 给s a m p l eg r a b b e r 设置p i n 上连接用的媒体类型。 如果想抓取2 4 位的r g b 图片,如下设置媒体类型: a m _ m e d i 久j y p em t ; z e r o m e m o r y ( & m t ,s i z e o f ( a mm e d i a t y p e ) ) ; m t m a j o r t y p e = m e d i a t y p e ) i d e o ; m t s u b t y p e = m e d i a s u b t y p e _ r g b 2 4 ; h r = p g r a b b e r - s e t m e d i a t y p e ( & m t ) ; 也可以根据当前显示器的配置来设置s a m p l eg r a b b e r 接受的r g b 类型。 h d ch d c = g e t d c ( n u l l ) ; i n ti b i t d e p t h = g e t d e v i c e c a p s ( h d c ,b i t s p l x e l ) ; r e l e a s e d c ( n u l l ,h d c ) ; s e tt h em e d i at y p e m t m a j o r t y p e = m e d 琏, 只巴矿i d e o ; s w i t c h ( i b i t d e p t h ) c a s e8 :l i l t s u b t y p e = m e d i a s u b t y p e - r g b 8 ; b r e a k ; c a s e1 6 :m t s u b t y p e - m e d m s u b t y p e r g b 5 5 5 ; b r e a k ; c a s e2 4 :m t s u b t y p e = m e d i a s u b t y p e - r g b 2 4 ; b r e a k ; c b 口, e3 2 :m t ,s u b t y p e = m e d i a s u b t y p e r g b 3 2 ; b r e a k ; d e f a u l t :r e t u me f a l l ; ) h r = p g r a b b e r - s e t m e d i a t y p e ( & m t ) ; ( 3 )完成f i l t e rg r a p h 的构建。 因为s a m p l eg r a b b e r 上已经设置了一个媒体类型,则其他f i l t e r 必须以这种 媒体类型才能与s a m p l eg r a b b e r 相连。我们可以使用d i r e c t s h o w 的“智能连接” 机制,来简化这个f i l t e rg r a p h 的创建过程,代码如下: 1 b a s e f i l t e r4 p s r c ; l u = p g r a p h 一 a d d s o u r c e f i l t e r ( w s z f i l e n a r n e ,l ”s o u r c e , p s r c ) ; i f ( f a i l e d ( h r ) ) r e t u ma ne r r o rc o d e ) h r = c o n n e c t f i t e r s ( p g r a p h , p s r c , p g r a b b e r f ) ; ( 4 )运行f i l t e rg r a p h 。 s a m p l eg r a b b e r 可以有如下两种工作模式: 缓冲模式将输入的s a m p l e 进行缓存后,再往下传送。 回调模式当有输入的s a m p l e 时,调用应用程序设置进来的回调函数。 因为回调模式会影响整个f i l t e rg r a p h 的效率,并且引起死锁,所以一般使用缓 冲模式。另外,可以设置i s a m p l e g r a b b e r :s e t o n e s h o t ,使得s a m p l eg r a b b e r 获得 一个s a m p l e 以后,就让f i l t e rg r a p h 停止,代码如下: s e to n e - s h o tm o d ea n db u f f e r i n g h r = p g r a b b e r - s e t o n e s h o t ( t m e ) ; l u - = p g r a b b e r - s e t b u f f e r s a r n p l e ( t r u e ) ; p c o n t r o l 一 r u n 0 ;r u nt h eg r a p h p e v e n t - w a i t f o r c o m p l e t i o n ( i n f i n i t e & e v c o d e ) ;w a i tt i l li ti sd o n e ( 5 ) 获取抓取到的s a m p l e 数据,缓冲模式下,我们可以调用 i s a m p l e g r a b b e r :g e t c u r r e n t b u f f e r 来获取s a m p l e 数据,代码如下: f i n dt h er e q u i r e db u f f e rs i z e l o n gc b b u f f e r = 0 ; h r = p g r a b b e r - g e t c u r r e n t b u f f e r ( & c b b u f f e r , n u l l ) ; c h a r p b u f f e r = n e wl h a r c b b u f f e r ; i f ( ! p b u f f e r ) o u to f m e m o r y r e t u ma l le r r o rc o d e ) h r = p g r a b b e r - g e t c u r r e n t b u f f e r ( & c b b u f f e r , ( 1 0 n 9 4 ) p b u f f e r ) ; 也可以将获取的数据使用g d i 函数显示出来,代码如下: a m m e d i k 3 y p er o t ; h r = p g r a b b e r - g e t c o n n n e c t e d m e d i a t y p e ( & m t ) ; i f ( f a i l e d ( h r ) ) f r e t u r ne r r o rc o d e ) h e x a m i n et h ef o r m a tb l o c k v i d e o i n f o h e a d e r 4 p v i h ; 12 i f ( ( m t f o r m a t t y p e = = f o r m a t _ v i d e o l n f o ) & & ( n a t ,c b f o r m a t = s i z e o f ( v i d e o i n f o h e a d e r ) ) & ( m t p b f o r m a t ! = n u l l ) ) p v i h = ( v i d e o i n f o h e a d e r ) m r p b f o r m a t ; ) e l s e w r o n gf o r m a t f r e et h ef o r m a tb l o c ka n dr e t u r na ne n - 0 l f r e e m e d i a t y p e ( m t ) ; r e t u r nv f 虻垦i n v a i d m e d i a t y p e ) 也可以使用媒体类型访问位图头文件信息。 例如,以下的代码使用g d i 绘制位图。 s e t d i b i t s t o d e v i c e ( h d c ,0 ,0 , p v i h - b m i h e a d e r b i w i d t h , p v i h 一 b m i h e a d e r b i h e i g h t , 0 , 0 , 0 , p v i h 一 b m i h e a d c r b i h e i g h t , p b u f f e r , ( b i t m a p i n f o + ) & p v i h 一 b m i h e a d e r , d i b _ r g b c o l o r s ) ; f r e et h ef o r m a tb l o c kw h e ny o ua r ed o n e ; f r e e m e d i a t y p e ( m t ) ; 3 3 使用媒体探测器 媒体探测器的组件c l s i d 是c l s i d _ m e d i a d e t ,实现的接口为i m e d i a d e t 。它 3 有两种工作模式:信息获取模式和抓图模式。当组件创建后,初始为信息获取模 式:我们可以调用接口方法e m e r b i t m a p g r a b m o d e 、g e t b i t m a p b i t s 或 w r i t e b i t m a p b i t s 进入抓图模式。但要注意:进入抓图模式之后,将不能再返回到 信息获取模式。 信息获取模式下的一般使用方法是: ( 1 ) 使用c o c r e a t e l n s t a n c e 函数创建一个c l s i dm e d i a d e t 组件实例; ( 2 ) 调用i m e d i a d e t :p u t _ f , i l e n a m e 设置媒体文件路径: ( 3 ) 调用i m e d i a d e t :g e t _ o u t s t r e a m s 获取输出流的个数( 只统计媒体类 型为m e d i a t y p ev i d e o 和m e d i a t y p ea u d i o 的流) : ( 4 ) 调用i m e d i a d e t :p u t _ c u r r e n l s t r e a m 指定一个输出流,然后调用 m e d i a d e t :g e t _ s t r e f r e t y p e 获知当前流的类型( 视频或音频) ,调用 i m e d i a d e t :g e ts t r e a m l e n g t h 获得当前流的时间长度,调用 l m e d i a d e t :g e f - f m m e r a t e 获取视频流输出帧率。 当媒体探测器工作在抓图模式时,一般也是首先在信息获取模式下选择想 要抓取的输出流,然后调用 i m e d i a d e t :g e t b i t m a p b i t s 或 i m e d i

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论