当前位置: 首页 > news >正文

【图像识别】基于模板匹配算法实现车辆出入库计时matlab系统

1 简介

车辆车牌识别系统的基本工作原理为:将摄像头拍摄到的包含车辆车牌的图像输入到计算机中进行预处理,再由检索模块对车牌进行搜索、检测、定位,并分割出包含车牌字符的矩形区域,然后对车牌字符进行二值化并将其分割为单个字符,然后输入JPEG或BMP格式的数字,输出则为车牌号码的数字。车牌自动识别是一项利用车辆的动态视频或静态图像进行车牌号码、车牌颜色自动识别的模式识别技术。其硬件基础一般包括触发设备、摄像设备、照明设备、图像采集设备、识别车牌号码的处理机等,其软件核心包括车牌定位算法、车牌字符分割算法和光学字符识别算法等。一个完整的车牌识别系统应包括车辆检测、图像采集、车牌识别等几部分。车牌识别单元对图像进行处理,定位出车牌位置,再将车牌中的字符分割出来进行识别,然后组成车牌号码输出,再获得当前时间。通过出停车场时对车辆再次进行处理,获得停车时间。

2 部分代码

%-----------------------------出停车场--------------------------- clc; clear all; [filename,filepath]=uigetfile('.jpg','输入一个需要识别的车牌图像');% 直接自动读入% fil=strcat(filepath,filename); %strcat函数:连接字符串;把filepath的字符串与filename的连接,即路径/文件名 I=imread(fil); I1=rgb2gray(I); I2=edge(I1,'roberts',0.15,'both'); se=[1;1;1]; I3=imerode(I2,se); se=strel('rectangle',[25,25]); I4=imclose(I3,se); I5=bwareaopen(I4,2000); [y,x,z]=size(I5); myI=double(I5); t % 滤波 h=fspecial('average',3); d=im2bw(round(filter2(h,d))); end % 分割出第二个字符 [word2,d]=getword(d); % 分割出第三个字符 [word3,d]=getword(d); % 分割出第四个字符 [word4,d]=getword(d); % 分割出第五个字符 [word5,d]=getword(d); % 分割出第六个字符 [word6,d]=getword(d); % 分割出第七个字符 [word7,d]=getword(d); [m,n]=size(word1); %归一化大小为40*20 word1=imresize(word1,[40 20]); word2=imresize(word2,[40 20]); word3=imresize(word3,[40 20]); word4=imresize(word4,[40 20]); word5=imresize(word5,[40 20]); word6=imresize(word6,[40 20]); word7=imresize(word7,[40 20]); imwrite(word1,'1.jpg'); imwrite(word2,'2.jpg'); imwrite(word3,'3.jpg'); imwrite(word4,'4.jpg'); imwrite(word5,'5.jpg'); imwrite(word6,'6.jpg'); imwrite(word7,'7.jpg'); liccode=char(['0':'9' 'A':'Z' '鄂津京辽鲁陕苏豫浙粤']); SubBw2=zeros(40,20); l=1; for I=1:7; ii=int2str(I); t=imread([ii,'.jpg']); SegBw2=imresize(t,[40 20],'nearest'); SegBw2=double(SegBw2)>20; if l==1 %第一位汉字识别 kmin=37; kmax=43; elseif l==2 %第二位字母识别 kmin=11; kmax=36; else l>=3 %第三位后字母或数字识别 kmin=1; kmax=36; end for k2=kmin:kmax fname=strcat('字符模板\',liccode(k2),'.jpg'); SamBw2=imread(fname); SamBw2=double(SamBw2)>1; for i=1:40 for j=1:20 SubBw2(i,j)=SegBw2(i,j)-SamBw2(i,j); end end %相当于两幅图相减得第三幅图 Dmax=0; for k1=1:40; for l1=1:20 if(SubBw2(k1,l1)>0 || SubBw2(k1,l1)<0) Dmax=Dmax+1; end end end Error(k2)=Dmax; end Error1=Error(kmin:kmax); MinError=min(Error1); findc=find(Error1==MinError); Code(l*2-1)=liccode(findc+kmin-1); Code(l*2)=' '; l=l+1; end t=toc; %与文本文件数据对比 file=fopen('Data.txt'); while feof(file)~=1 fid=fgetl(file); if(strcmp(fid,Code)==1) fic=fgetl(file); end end fclose(file); fib=datestr(now); fie=datevec(fic); fid=datevec(fib); ts=etime(fid,fie); aa={Code;num2str(ts);'单位为秒'}; msgbox(aa,'车牌及停车时间');%弹出框

3 仿真结果

4 参考文献

[1]赖特. "基于模板匹配及人工神经网络算法的图像识别应用——MATLAB实现机动车牌号码辨识." 智能建筑与智慧城市 11(2017):5.

部分理论引用网络文献,若有侵权联系博主删除。

http://www.jsqmd.com/news/1328526/

相关文章:

  • Unity热更新实战:YooAsset与HybridCLR双核框架搭建指南
  • 为什么新店开业要3个月?数字化中台实现“开箱即用”能力
  • qmcdump:3分钟掌握QQ音乐加密格式无损转换技术
  • 4步实现跨平台Steam创意工坊模组下载完整方案
  • 实测测评|新媒体营销方案 PPT 怎么做?智在 PPT 真实上手,不吹不黑
  • Unity图集切割实战:基于Texture2D.SetPixel的离线资源处理工具
  • 如何快速掌握绝区零一条龙:新手必备的完整使用教程
  • 数据标注有“三集”:训练集、验证集、测试集到底有什么区别?
  • 2026暑假老师效率助手:跳绳阅读练字打卡,作业收集批改全搞定
  • 无断链三维轨迹重构与战场情报溯源
  • 十万个why:为什么做RAG 最怕的,不是检索失败,是明令禁止瞎答,它还硬编答案
  • 屈原:世人只知屈原投江,却不知他的楚辞,是华夏浪漫文学的起点
  • 【信息科学与工程学】【数据中心】计算机科学与自动化——第三百零五篇 数据中心 Scale-Up、Scale-Out、Scale-Across101 芯片接入数据中心129
  • 杭州专业的蜂窝板材厂家怎么选?看工艺与交付更靠谱 - 热点品牌推荐
  • 2026徐州靠谱家装企业盘点,本土老牌徐州大自然装饰公司 - 招财兔数字员工
  • 网站时光机HTTrack:3分钟掌握离线浏览与数据备份终极指南
  • 英雄联盟Akari助手:免费开源的游戏效率工具,提升你的操作水平300%
  • 掌握谈判主动权,从读懂这本经典谈判书籍开始
  • 基于ARM+FPGA平台在精密测控领域的应用:ZYNQ高精度温振压多参融合采集系统
  • SpringBoot+Vue电影推荐系统开发与协同过滤算法实践
  • 杭州毛坯房地暖选择与安装全攻略
  • GEO技术如何操控大模型推荐系统及防御方案
  • 复杂电磁环境下石油通信训练,基于 HWG1 分析电磁环境模拟技术
  • AI宠物产品客观评测:核心参数与使用体验的实测解析 - 招财兔数字员工
  • 山海万灵 HarmonyOS 文化知识设计续篇(10):地图缩放与区域选中态协同方案
  • 线上竞拍实操技巧,理性参拍不冲动消费
  • 【限时解密】AI景深效果工业级落地手册:从单目深度估计到DOF物理仿真,附NASA开源光学引擎适配补丁
  • 医院药品与样本配送机器人安全性评测:哪家品牌更值得信赖?
  • [实践经验] 指导 AI 写文章时,别只改一篇稿子:把口癖和空话沉淀成 skill 再审一遍
  • tsMuxer视频封装技术深度解析:专业级传输流复用解决方案