车牌定位java代码 java车牌号识别

用java编写一个程序:由车牌号前2位知道车辆所属地 浙江省的市就行

package demo;

为科尔沁等地区用户提供了全套网页设计制作服务,及科尔沁网站建设行业解决方案。主营业务为网站建设、成都网站制作、科尔沁网站设计,以传统方式定制建设网站,并提供域名空间备案等一条龙服务,秉承以专业、用心的态度为用户提供真诚的服务。我们深信只要达到每一位用户的要求,就会得到认可,从而选择与我们长期合作。这样,我们也可以走得更远!

import java.util.Scanner;

public class CarCard {

//浙A 杭州,浙B 宁波,浙C 温州,浙D 绍兴,浙E 湖州,浙F 嘉兴,浙G 金华,浙H 衢州,浙J 台州,浙K 丽水,浙L 舟山

//网上搜的,应该是对的,这个东西应该管你要

public static void main(String[] args) {

System.out.println("请输入车牌号");

Scanner sc = new Scanner(System.in);

String carno = sc.next();

String t = carno.substring(0,2);

checkAddressByCarCard(t);

}

private static void checkAddressByCarCard(String no){

String a[]={"浙A","浙B","浙C","浙D","浙E","浙F","浙G","浙H","浙J","浙K","浙L"};

String b[]={"杭州","宁波","温州","绍兴","湖州","嘉兴","金华","衢州","台州","丽水","舟山"};

int index = 0;

for(int i = 0;i11;i++){

if(no.equalsIgnoreCase(a[i])){

index=i;

System.out.println("车辆所在地为:"+b[i]);

}

}

}

}

//不严谨,但是基本功能实现了

我有一个车牌识别的程序,主程序run调用了子程序预处理、切割、识别等函数,而各个子程序需要调用主程

肯定可以啦,变量放在上层程序中,作为参数传递给各个不同功能函数。

主函数: close all; clear all;

%% 归一化训练样本

I0=pretreatment(imread('BP/0.jpg')); I1=pretreatment(imread('BP/1.jpg')); I2=pretreatment(imread('BP/2.jpg')); I3=pretreatment(imread('BP/3.jpg')); I4=pretreatment(imread('BP/4.jpg')); I5=pretreatment(imread('BP/5.jpg')); I6=pretreatment(imread('BP/6.jpg')); I7=pretreatment(imread('BP/7.jpg')); I8=pretreatment(imread('BP/8.jpg')); I9=pretreatment(imread('BP/9.jpg')); I10=pretreatment(imread('BP/A.jpg')); I11=pretreatment(imread('BP/B.jpg')); I12=pretreatment(imread('BP/C.jpg')); I13=pretreatment(imread('BP/G.jpg')); I14=pretreatment(imread('BP/L.jpg')); I15=pretreatment(imread('BP/M.jpg')); I16=pretreatment(imread('BP/N.jpg')); I17=pretreatment(imread('BP/P.jpg'));

P=[I0',I1',I2',I3',I4',I5',I6',I7',I8',I9',I10',I11',I12',I13',I14',I15',I16',I17']; T=eye(18,18); %输出样本 %% bp神经网络参数设置

net=newff(minmax(P),[1250,32,18],{'logsig','logsig','logsig'},'trainrp'); net.inputWeights{1,1}.initFcn ='randnr'; net.layerWeights{2,1}.initFcn ='randnr'; net.trainparam.epochs=5000; net.trainparam.show=50; %net.trainparam.lr=0.003;

net.trainparam.goal=0.0000000001; net=init(net);

[net,tr]=train(net,P,T); %训练样本 %% 测试

%I=imread('CAR/0.jpg'); DW=Location();%车牌定位

[PIN0,PIN1,PIN2,PIN3,PIN4,PIN5,PIN6]=StringSplit(DW);%字符分割及处理 %% 测试字符,得到识别数值 PIN0=pretreatment(PIN0); PIN1=pretreatment(PIN1); PIN2=pretreatment(PIN2);

PIN3=pretreatment(PIN3); PIN4=pretreatment(PIN4); PIN5=pretreatment(PIN5); PIN6=pretreatment(PIN6);

P0=[PIN0',PIN1',PIN2',PIN3',PIN4',PIN5',PIN6']; for i=2:7

T0= sim(net ,P0(:,i)); T1 = compet (T0) d = find(T1 == 1) - 1; if (d==10) str='A'; elseif (d==11) str='B'; elseif (d==12) str='C'; elseif (d==13) str='G'; elseif (d==14) str='L'; elseif (d==15) str='M'; elseif (d==16) str='N'; elseif (d==17) str='P'; elseif (d==0) str='0'; elseif (d==1) str='1'; elseif (d==2) str='2'; elseif (d==3) str='3'; elseif (d==4) str='4'; elseif (d==5) str='5'; elseif (d==6) str='6'; elseif (d==7) str='7'; elseif (d==8) str='8'; elseif (d==9) str='9'; else

str=num2str(d); end

switch i case 2

str2=str; case 3

str3=str; case 4

str4=str;

case 5

str5=str; case 6

str6=str; otherwise str7=str; end end

%% 识别出的结果以标题形式显示在图上

S=strcat('云',str2,str3,str4,str5,str6,str7); figure();

imshow(DW),title(S,'fontsize',40);

matlab车牌定位与识别代码,哪位大神能给逐句注释一下

逐句 可能没法呢 寡人已经在论坛解释过了 有问题呼我把

首先

1、定位部分 [temp MaxY]=max(white_y); %temp为向量white_y的元素中的最大值,MaxY为该值的索引(在向量中的位置),也就是说temp为车牌矩阵每一列求和的最大值,即车牌x方向最多像素的地方,(姑且叫他像素中线)那么

while ((Blue_y(PY1,1)=5)(PY11)) PY1=PY1-1; 就可以确实车牌上边缘,同理

while ((Blue_y(PY2,1)=5)(PY2y)) PY2=PY2+1;确定下边缘 。为什么是大于5呢,刚才已经知道是车牌x方向所有列的和,也就是宽,车牌单个字符,那么范围为0-128px,如果值越大,则上下边缘就像素中线就近了,那么车牌车牌横向就短了嘛

,同理。while ((Blue_y(1,PX1)3)(PX1x)) PX1=PX1+1;

为什么是3呢。,车牌单个字符的,值确定,那么车牌车牌纵向区域就窄了

2、分割:

首先对车牌图像自左向右逐列扫描,寻找连续有文字的区间块,将该区间块的有效宽度与某一固定阈值(本文设定的阈值为10,可更改)进行比较,若小于该设定阈值,则认为是左侧干扰,裁剪干扰区域;反之,分割出该模糊

字符块。

3)判断该字符区域是否为有效区域。首先建立矩阵,依据车牌先验知识,分析该字符区域的有效宽度及宽高比(1:2),即可判断是否为干扰区域,若为字符区域,进一步去除伪字符区域,则分割出第一个字符;反之,认为是左侧干扰区域进行裁剪。

解释:本程序对于定位部分比较理想的情况下 分割率为50%+,但对川字车牌没有鲁棒性,由于川字未连通,所以会被当作背景而切除,其他省份,暂时没有遇到过。当然如果定位后的车牌倾角大于20度这样,那么必须校正,否则会出错

3、分割:这部分就悲剧了,采用的是单纯的模板相减,并且程序没有标准模板

建议计算相关系数,用距离变换进行匹配把

JAVA中的判断车牌号的正则表达式是什么啊?

String cph="WJ12345";

Pattern pattern = Pattern.compile("^[\u4e00-\u9fa5|WJ]{1}[A-Z0-9]{6}$");

Matcher matcher = pattern.matcher(cph);

if (!matcher.matches()) {

System.out.println("车牌号格式不对!");

}else{

System.out.println("车牌号格式正确!");

}


本文名称:车牌定位java代码 java车牌号识别
URL地址:http://bzwzjz.com/article/dopppjh.html

其他资讯

Copyright © 2007-2020 广东宝晨空调科技有限公司 All Rights Reserved 粤ICP备2022107769号
友情链接: 成都网站设计 成都h5网站建设 手机网站制作设计 网站建设公司 定制网站建设 成都网站设计 高端网站设计 高端网站设计 攀枝花网站设计 成都企业网站建设 成都网站设计 网站设计 网站建设公司 网站制作公司 成都品牌网站设计 重庆电商网站建设 移动网站建设 成都网站建设 成都网站建设 手机网站制作 专业网站建设 高端网站设计