matlab中caitu_tiqu,源码交流=图像处理 车牌号码识别[Tested]
clc,clear,close all
% ==============测定算法执行的时间,开始计时=================
%=====================读入图片===============================
[fn,pn,fi]=uigetfile('*.jpg','选择图片');
%函数的调用方法:function [FileName,PathName,FilterIndex] = uigetfile(FilterSpec,dialogTitle,DefaultName)
% FileName:返回的文件名
% PathName:返回的文件的路径名
% FilterIndex:选择的文件类型
% FilterSpec:文件类型设置
% DialogTitle:打开对话框的标题
% DefaultName:默认指向的文件名
I=imread([pn fn]);figure,imshow(I);title('原始图像'); % 显示原始图像
chepailujing=[pn fn]; % 这个就是包括了车牌图像的所有路径,包括文件名
I_bai=I; % 图像复制一次
[PY2,PY1,PX2,PX1]=caitu_fenge(I); % 确定车牌的的边界值
% figure,imshow(I);
% I=rgb2hsv(I);
% [PY2,PY1,PX2,PX1]=caitu_tiqu(I,I_bai); % 用HSI模型识别蓝色,用rgb模型识别白色
%================分割车牌区域=================================
%===============车牌区域根据面积二次修正============
[PY2,PY1,PX2,PX1,threshold]=SEC_xiuzheng(PY2,PY1,PX2,PX1);
%==============更新图片=============================
Plate=I_bai(PY1:PY2,PX1:PX2,:);%使用caitu_tiqu
%==============考虑用腐蚀解决蓝色车问题=============
bw=Plate;figure,imshow(bw);title('车牌图像');%hsv彩图提取图像
%==============这里要根据图像的倾斜度进行选择这里选择的图片20090425686.jpg
bw=rgb2gray(bw);figure,imshow(bw);title('灰度图像');
%================倾斜校正===========================
qingxiejiao=rando_bianhuan(bw);%计算倾斜角
bw=imrotate(bw,qingxiejiao,'bilinear','crop');%imrotate图像旋转函数,选择倾斜角度数
% imrotate 参数含义:'bilinear’双线性的'bicubic’双三次的
% 'crop’输出的图像B和输入的图像A保持一致的尺寸,裁剪旋转的图像至合适的大小
figure,imshow(bw);title('倾斜校正');% 取值为负值向右旋转
%==============================================
bw=im2bw(bw,graythresh(bw));
% figure,imshow(bw);将图像转换成二值图像,graythresh 能用来自动计算变量 level
% 将灰度图像 I 转换为二进制图像。
% 输出图像 BW 将输入图像中亮度值大于 level 的像素替换为值1 (白色),其他替换为值0(黑色)。
% 你指定 level 在 [0,1]之间,不用管输入图像的等级。
% 函数graythresh 能用来自动计算变量 level 。如果你不指定 level ,im2bw 使用 0.5。
%bwmorph作用是对二值图像进行形态学的操作
figure,imshow(bw);
bw=bwmorph(bw,'hbreak',inf); % figure,imshow(bw);
% figure,imshow(bw);
%inf表示这种情况下该操作被重复执行直到图像不再发生变化为止。
%hbreak 移除H连通的像素
% 1 1 1 1 1 1
% 0 1 0 变成 0 0 0
% 1 1 1 1 1 1
bw=bwmorph(bw,'spur',inf); % figure,imshow(bw);title('擦除之前');
% figure,imshow(bw);
% 移除刺激(孤立)像素。比如:
% 0? 0? 0? 0 ? ? ? ? ? ? ? ? ? 0? 0? 0? 0
% 0? 0? 0? 0 ? ? ? ? ? ? ? ? ? 0? 0? 0? 0
% 0? 0? 1? 0 ? ? ? 变成 ? ? ? ? ?0? 0? 0? 0
% 0? 1? 0? 0 ? ? ? ? ? ? ? ? ? 0? 1? 0? 0
% 1? 1? 0? 0 ? ? ? ? ? ? ? ? ? 1? 1? 0? 0
bw=bwmorph(bw,'open',5);%figure,imshow(bw);title('闭合运算');
% figure,imshow(bw);
%open 执行形态学开操作(先腐蚀后膨胀)
bw = bwareaopen(bw, threshold);%threshold 来自SEC_xiuzheng
%1 matlab函数bwareaopen──删除小面积对象
% 格式:BW2 = bwareaopen(BW,P,conn)
% 作用:删除二值图像BW中面积小于P的对象
figure,imshow(bw);title('擦除');
%==================加入进度条==================
% h=waitbar(0,'程序运行中,请稍等......')
% for i=1:10008
% waitbar(i/5000,h)
% end
% close(h);
%wavplay(wavread('程序运行中.wav'),22000);
%===============================================
bw=~bw;figure,imshow(bw);title('擦除反色'); % 颜色反转
%=====对图像进一步裁剪,保证边框贴近字体========
bw=touying(bw);figure;imshow(bw);title('Y方向处理');
bw=~bw;
bw = bwareaopen(bw, threshold);
bw=~bw;
figure,imshow(bw);title('二次擦除');
[y,x]=size(bw);%对长宽重新赋值
%================文字分割=======================
fenge=shuzifenge(bw,qingxiejiao);
[m,k]=size(fenge);
%==========显示分割图像结果=====================
figure;
for s=1:2:k-1
subplot(1,k/2,(s+1)/2);imshow(bw( 1:y,fenge(s):fenge(s+1)));
end
title('分割后的图像');
%================ 给七张图片定位================桂AV6388
han_zi =bw( 1:y,fenge(1):fenge(2));
zi_mu =bw( 1:y,fenge(3):fenge(4));
zm_sz_1 =bw( 1:y,fenge(5):fenge(6));
zm_sz_2 =bw( 1:y,fenge(7):fenge(8));
shuzi_1 =bw( 1:y,fenge(9):fenge(10));
shuzi_2 =bw( 1:y,fenge(11):fenge(12));
shuzi_3 =bw( 1:y,fenge(13):fenge(14));
%================================识别====================================
%======================把修正数据读入==============================
xiuzhenghanzi = imresize(han_zi, [110 55],'bilinear');
xiuzhengzimu = imresize(zi_mu, [110 55],'bilinear');
xiuzhengzm_sz_1= imresize(zm_sz_1,[110 55],'bilinear');
xiuzhengzm_sz_2 = imresize(zm_sz_2,[110 55],'bilinear');
xiuzhengshuzi_1 = imresize(shuzi_1,[110 55],'bilinear');
xiuzhengshuzi_2 = imresize(shuzi_2,[110 55],'bilinear');
xiuzhengshuzi_3 = imresize(shuzi_3,[110 55],'bilinear');
%============ 把0-9 , A-Z以及省份简称的数据存储方便访问============
hanzishengfen = duquhanzi(imread('cpgui.bmp'),imread('cpguizhou.bmp'),imread('cpjing.bmp'),imread('cpsu.bmp'),imread('cpyue.bmp'));
%因数字和字母比例不同。这里要修改
shuzizimu=duquszzm(imread('0.bmp'),imread('1.bmp'),imread('2.bmp'),imread('3.bmp'),imread('4.bmp'),...
imread('5.bmp'),imread('6.bmp'),imread('7.bmp'),imread('8.bmp'),imread('9.bmp'),...
imread('10.bmp'),imread('11.bmp'),imread('12.bmp'),imread('13.bmp'),imread('14.bmp'),...
imread('15.bmp'),imread('16.bmp'),imread('17.bmp'),imread('18.bmp'),imread('19.bmp'),...
imread('20.bmp'),imread('21.bmp'),imread('22.bmp'),imread('23.bmp'),imread('24.bmp'),...
imread('25.bmp'),imread('26.bmp'),imread('27.bmp'),imread('28.bmp'),imread('29.bmp'),...
imread('30.bmp'),imread('31.bmp'),imread('32.bmp'),imread('33.bmp'));
zimu = duquzimu(imread('10.bmp'),imread('11.bmp'),imread('12.bmp'),imread('13.bmp'),imread('14.bmp'),...
imread('15.bmp'),imread('16.bmp'),imread('17.bmp'),imread('18.bmp'),imread('19.bmp'),...
imread('20.bmp'),imread('21.bmp'),imread('22.bmp'),imread('23.bmp'),imread('24.bmp'),...
imread('25.bmp'),imread('26.bmp'),imread('27.bmp'),imread('28.bmp'),imread('29.bmp'),...
imread('30.bmp'),imread('31.bmp'),imread('32.bmp'),imread('33.bmp'));
shuzi = duqushuzi(imread('0.bmp'),imread('1.bmp'),imread('2.bmp'),imread('3.bmp'),imread('4.bmp'),...
imread('5.bmp'),imread('6.bmp'),imread('7.bmp'),imread('8.bmp'),imread('9.bmp'));
%============================识别结果================================================
i=1;%shibiezm_sz该函数识别数字有问题
jieguohanzi = shibiehanzi(hanzishengfen,xiuzhenghanzi);shibiejieguo(1,i) =jieguohanzi; i=i+1;
jieguozimu = shibiezimu(zimu,xiuzhengzimu); shibiejieguo(1,i) =jieguozimu; i=i+1;
jieguozm_sz_1= shibiezm_sz(shuzizimu,xiuzhengzm_sz_1); shibiejieguo(1,i) =jieguozm_sz_1;i=i+1;
jieguozm_sz_2= shibiezm_sz(shuzizimu,xiuzhengzm_sz_2); shibiejieguo(1,i) =jieguozm_sz_2;i=i+1;
jieguoshuzi_1= shibieshuzi(shuzi,xiuzhengshuzi_1); shibiejieguo(1,i) =jieguoshuzi_1;i=i+1;
jieguoshuzi_2= shibieshuzi(shuzi,xiuzhengshuzi_2); shibiejieguo(1,i) =jieguoshuzi_2;i=i+1;
jieguoshuzi_3= shibieshuzi(shuzi,xiuzhengshuzi_3); shibiejieguo(1,i) =jieguoshuzi_3;i=i+1;
%==========================对话框显示显示=============================================
shibiejieguo;
msgbox(shibiejieguo,'识别结果');
%================导出文本==========================
fid=fopen('Data.xls','a+');
fprintf(fid,'%s\r\n',shibiejieguo,datestr(now));
fclose(fid);
%================读出声音==========================
duchushengyin(shibiejieguo);
%================读取计时==========================
t=toc;
%==================================================
matlab中caitu_tiqu,源码交流=图像处理 车牌号码识别[Tested]相关推荐
- [转载]MATLAB技术论坛【源码交流】汇总
原文地址:MATLAB技术论坛[源码交流]汇总 作者:风雪夜归人 过已知三点做圆MATLAB源代码 http://www.matlabsky.com/thread-290-1-1.html 椭圆(圆) ...
- 图像转置的MATLAB和OpenCV源码
图像处理开发需求.图像处理接私活挣零花钱,请加微信/QQ 2487872782 图像处理开发资料.图像处理技术交流请加QQ群,群号 271891601 注意,图像转置和图像旋转是两回事,图像转置只是把 ...
- java 自定义arraylist_Java 中模仿源码自定义ArrayList
Java 中模仿源码自定义ArrayList 最近看了下ArrayList的源码,抽空根据ArrayList的底层结构写了一个功能简单无泛型的自定义ArrayLsit,帮助自己更好理解ArrayLis ...
- linux ssh rpm包,RHEL6(CentOS6)中使用源码包编译生成RPM的基本方法:升级OpenSSH篇
RHEL6(CentOS6)中使用源码包编译生成RPM的基本方法:升级OpenSSH篇 具体过程请见代码~ # cp openssh-7.1p1.tar.gz /root/rpmbuild/SOURC ...
- c++调用mysql存储过程_C++中ADO调用MySQL存储过程失败,诡异的语法异常,求解中,附源码...
C++中ADO调用mysql存储过程失败,诡异的语法错误,求解中,附源码 不管怎么调整,死活都出现下面的错误 C++ADO代码我实在找不到什么错误了,难道是MySQL有什么问题,或者有其他需要注意的地 ...
- 如何在eclipse中查看源码
在eclipse中查看源码 作为一个java开发的程序员,特别是初学者的java程序员.有时候我们很有必要查看java本身的一些工具类的源码,但是在这之前需要进行一项设置才能顺利的查看得到我们JKD自 ...
- linux安装pgsql源码包解压,在Linux(centos)中使用源码安装pgRouting
目录 一.解压pgRouting 二.配置PostgreSQL的环境变量 三.编译源代码 四.测试 由于pgRouting依赖于PostGIS和PostgreSQL,所以阅读本文之前,务必请先阅读: ...
- 深入理解 Node.js 中 EventEmitter源码分析(3.0.0版本)
events模块对外提供了一个 EventEmitter 对象,即:events.EventEmitter. EventEmitter 是NodeJS的核心模块events中的类,用于对NodeJS中 ...
- Spring中AOP源码剖析
Spring中AOP源码剖析 关键词 aop的增强发生在后置处理器中(没有循环依赖) 最终增强是通过 递归调用 ,层层增强 一.环境准备 1.1 bean和接口 public class AopBea ...
最新文章
- 执行高性能任务的强大桌面计算机是,用于高性能任务的强大的桌面计算机是一个______。...
- Qt QLabel 显示gif动图
- python编写登录接口与三级菜单小程序
- kpc v0.8.3发布,跨框架的组件库解决方案
- 注解 @Scheduled
- c++中函数放在等号右边_如何从C或C++中的函数返回多个值?
- android 标题图标,android 中 actionbar 常用方法。设置标题,隐藏图标等
- 基于Hbase的用户评分协同过滤推荐算法
- python处理mysql数据结构_python环境下使用mysql数据及数据结构和二叉树算法(图)...
- 《转》Ubuntu 12.04常用的快捷键
- 爬虫软件python功能_Python 网络爬虫程序详解
- php什么程度算学会,十天学会PHP - 序1,学会的标准是什么?(20180820-1)
- 浅谈C++ STL中的优先队列(priority_queue)
- 实践案例丨ACL2020 KBQA 基于查询图生成回答多跳复杂问题
- layer php弹出层,layer官方演示与讲解(jQuery弹出层插件)
- 流畅的python 数据模型
- 代码文件夹带有红色感叹号_接口测试平台代码实现7:菜单的开发
- 扬州工业机器人外壳设计排名_世界十大工业机器人制造商公布,排名第一的竟是……...
- lisp方格网法计算土方量_CAD计算土方方量插件
- swift-集成touch id功能 指纹验证