车牌计算

void Get_CP_MSG(u8 * src_dat,u8 * des_dat)		//解析出车牌的5bit值
{
    u8 temp,i;
    //分离
	//  [      0      ] [      1      ] [      2      ] [      3      ] [      4      ] [      5      ] [      6      ]
	//  * * * * * * * * + + + + + + + + * * * * * * * * + + + + + + + + * * * * * * * * + + + + + + + + * * * * * * * *
	//  7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0
	//  1 1 1 1 1 1 2 2 2 2 2 3 3 3 3 3 3 4 4 4 4 4 4 5 5 5 5 5 5 6 6 6 6 6 6 7 7 7 7 7 7 # * * * * * * # # # # $ $ $ $
	//  1表示检测,2表示区 3-7表示车牌
	//  *表示年   #表示日   $表示月

    des_dat[0]=(src_dat[0]>>2)&0X3F;//1

	temp=(src_dat[0]<<3)&0X18;
	des_dat[1]=(src_dat[1]>>5)&0X07;//2
	des_dat[1]=des_dat[1]+temp;

	temp=(src_dat[1]<<1)&0X3E;
	des_dat[2]=(src_dat[2]>>7)&0X01;//3
	des_dat[2]=des_dat[2]+temp;

	des_dat[3]=(src_dat[2]>>1)&0X3F;//4

    temp=(src_dat[2]<<5)&0X20;//5
	des_dat[4]=(src_dat[3]>>3)&0X1F;
	des_dat[4]=des_dat[4]+temp;

	temp=(src_dat[3]<<3)&0X38;//6
	des_dat[5]=(src_dat[4]>>5)&0X07;
	des_dat[5]=des_dat[5]+temp;

	temp=(src_dat[4]<<1)&0X3E;
	des_dat[6]=(src_dat[5]>>7)&0X01;//3
	des_dat[6]=des_dat[6]+temp;

	//年
	des_dat[7]=src_dat[5]&0X3F;//
	//月
	des_dat[8]=src_dat[6]&0X0F;//
	//日
	temp=(src_dat[5]>>2)&0X10;
    des_dat[9]=(src_dat[6]>>4)&0X0F;//
	des_dat[9]=des_dat[9]+temp;

	//映射
	des_dat[0]=jianchen(des_dat[0]);

	for(i=1;i<7;i++)
	{
	    des_dat[i]=Check_Plate_Num(des_dat[i]);
	}
}

u8 jianchen(u8 dat)
{
    if(dat==1)
	{
        dat=36;//return _T("皖");
	}
	else if(dat==2)
	{
        dat=37;//return _T("京");
	}
	else if(dat==3)
	{
        dat=38;//return _T("闽");
	}
	else if(dat==4)
	{
        dat=39;//return _T("甘");
	}
	else if(dat==5)
	{
        dat=40;//return _T("粤");
	}
	else if(dat==6)
	{
        dat=41;//return _T("桂");
	}
	else if(dat==7)
	{
        dat=42;//return _T("贵");
	}
	else if(dat==8)
	{
        dat=43;//return _T("琼");
	}
	else if(dat==9)
	{
        dat=44;//return _T("翼");
	}
	else if(dat==10)
	{
        dat=45;//return _T("豫");
	}
    else if(dat==11)
	{
        dat=46;//return _T("黑");
	}
    else if(dat==12)
	{
        dat=47;//return _T("鄂");
	}
    else if(dat==13)
	{
        dat=48;//return _T("湘");
	}
    else if(dat==14)
	{
        dat=49;//return _T("吉");
	}
	else if(dat==15)
	{
        dat=50;//return _T("苏");
	}
	else if(dat==16)
	{
        dat=51;//return _T("赣");
	}
	else if(dat==17)
	{
        dat=52;//return _T("辽");
	}
	else if(dat==18)
	{
        dat=53;//return _T("蒙");
	}
	else if(dat==19)
	{
        dat=54;//return _T("宁");
	}
	else if(dat==20)
	{
        dat=55;//return _T("青");
	}
	else if(dat==21)
	{
        dat=56;//return _T("鲁");
	}
	else if(dat==22)
	{
        dat=57;//return _T("晋");
	}
	else if(dat==23)
	{
        dat=58;//return _T("陕");
	}
	else if(dat==24)
	{
        dat=59;//return _T("沪");
	}
	else if(dat==25)
	{
        dat=60;//return _T("川");
	}
	else if(dat==26)
	{
        dat=61;//return _T("津");
	}
	else if(dat==27)
	{
        dat=62;//return _T("藏");
	}
	else if(dat==28)
	{
        dat=63;//return _T("新");
	}
	else if(dat==29)
	{
        dat=64;//return _T("云");
	}
	else if(dat==30)
	{
        dat=65;//return _T("浙");
	}
	else if(dat==31)
	{
        dat=66;//return _T("渝");
	}
	else if(dat==32)
	{
        dat=67;//return _T("军");
	}
	else if(dat==33)
	{
        dat=68;//return _T("空");
	}
	else if(dat==34)
	{
        dat=69;//return _T("海");
	}
	else if(dat==35)
	{
        dat=70;//return _T("北");
	}
	else if(dat==36)
	{
        dat=71;//return _T("沈");
	}
	else if(dat==37)
	{
        dat=72;//return _T("兰");
	}
	else if(dat==38)
	{
        dat=73;//return _T("济");
	}
	else if(dat==39)
	{
        dat=74;//return _T("南");
	}
	else if(dat==40)
	{
        dat=75;//return _T("广");
	}
	else if(dat==41)
	{
        dat=76;//return _T("成");
	}
	return dat;
}

u8 Check_Plate_Num(u8 dat)
{
    if(dat==0)
	{
        dat=35;//return _T("0");
	}
	//1-9保持不变
	else if(dat==10)
	{
        dat=77;//return _T("A");
	}
	else if(dat==11)
	{
        dat=78;//return _T("B");
	}
	else if(dat==12)
	{
        dat=79;//return _T("C");
	}
	else if(dat==13)
	{
        dat=80;//return _T("D");
	}
	else if(dat==14)
	{
        dat=81;//return _T("E");
	}
	else if(dat==15)
	{
        dat=82;//return _T("F");
	}
	else if(dat==16)
	{
        dat=83;//return _T("G");
	}
	else if(dat==17)
	{
        dat=84;//return _T("H");
	}
	else if(dat==18)
	{
        dat=85;//return _T("I");
	}
	else if(dat==19)
	{
        dat=86;//return _T("J");
	}
	else if(dat==20)
	{
        dat=87;//return _T("K");
	}
	else if(dat==21)
	{
        dat=88;//return _T("L");
	}
	else if(dat==22)
	{
        dat=89;//return _T("M");
	}
	else if(dat==23)
	{
        dat=90;//return _T("N");
	}
	else if(dat==25)
	{
        dat=92;//return _T("P");
	}
	else if(dat==26)
	{
        dat=93;//return _T("Q");
	}
	else if(dat==27)
	{
        dat=94;//return _T("R");
	}
	else if(dat==28)
	{
        dat=95;//return _T("S");
	}
	else if(dat==29)
	{
        dat=96;//return _T("T");
	}
	else if(dat==30)
	{
        dat=97;//return _T("U");
	}
	else if(dat==31)
	{
        dat=98;//return _T("V");
	}
	else if(dat==32)
	{
        dat=99;//return _T("W");
	}
	else if(dat==33)
	{
        dat=100;//return _T("X");
	}
	else if(dat==34)
	{
        dat=101;//return _T("Y");
	}
	else if(dat==35)
	{
        dat=102;//return _T("Z");
	}
	return dat;
}

  

时间: 2024-08-04 14:55:02

车牌计算的相关文章

利用颜色和形态学两种方法进行车牌区域提取的OpenCV代码

要想提取车牌号,首先你要定位车牌区域嘛,本文分别两种方法用,即颜色和形态学的方法,对车牌区域进行判定.说得是两种方法,其实两种方法并无多大的区别,只是有一步的判断标准不一样而已,你看了下面整理出的的思路就知道两者的区别真的很小了. 方法一:利用颜色提取车牌区域的思路: ①求得原图像的sobel边缘sobelMat ②在HSV空间内利用车牌颜色阈值对图像进行二值化处理,得到图像bw_blue→ ③由下面的判别标准得到图像bw_blue_edge for (int k = 1; k != heigh

车牌识别及验证码识别的一般思路

http://www.pin5i.com/showtopic-22246.html 描述一下思路及算法. 全文分两部分,第一部分讲车牌识别及普通验证码这一类识别的普通方法,第二部分讲对类似QQ验证码,Gmail验证码这一类变态验证码的识别方法和思路. 一.车牌/验证码识别的普通方法 车牌.验证码识别的普通方法为: (1)      将图片灰度化与二值化 (2)      去噪,然后切割成一个一个的字符 (3)      提取每一个字符的特征,生成特征矢量或特征矩阵 (4)      分类与学习.

车牌识别算法介绍与实践

汽车牌照自己主动识别整个处理过程分为预处理.边缘提取.车牌定位.字符切割.字符识别五大模块,当中字符识别过程主要由下面3个部分组成: ①正确地切割文字图像区域: ②正确的分离单个文字: ③正确识别单个字符. 用MATLAB软件编程来实现每个部分,最后识别出汽车牌照. 系统设计概述 因为车辆牌照是机动车唯一的管理标识符号,在交通管理中具有不可替代的作用,因此车辆牌照识别系统应具有非常高的识别正确率,对环境光照条件.拍摄位置和车辆行驶速度等因素的影响应有较大的容阈,而且要求满足实时性要求. 该系统是

神经网络识别车牌字符

Ronny大神曾在OpenCV进阶之路:神经网络识别车牌字符写过有关用神经网络识别车牌字符的文章,但无奈仅仅给出了样本,没有详细的代码,在这里补足这个遗憾. opencv环境请自行配置.因为用到了MFC类库查找文件夹下的文件夹,请选择使用共享的MFC类库. 下面是代码: #include <afx.h> const char*mlpmodel="ann.xml"; //中国车牌 const char strCharacters[] = {'0','1','2','3','4

基于opencv的车牌识别系统

前言 学习了很长一段时间了,需要沉淀下,而最好的办法就是做一个东西来应用学习的东西,同时也是一个学习的过程. 概述     OpenCV的全称是:Open Source Computer Vision Library.OpenCV是一个基于(开源)发行的跨平台计算机视觉库,可以运行在Linux.Windows和Mac OS操作系统上.它轻量级而且高效——由一系列 C 函数和少量 C++ 类构成,同时提供了Python.Ruby.MATLAB等语言的接口,实现了图像处理和计算机视觉方面的很多通用算

基于‘匹配’技术的车牌自动识别系统

随着智能停车场系统的兴起,车牌识别技术又着实火了一把.我也来了兴趣,大致浏览了下当前的现状,发现目前流行的车牌识别技术是基于神经网络的(这方面可参见Mastering OpenCV with Practical Computer Vision Projects一书,由机械工业出版社发行).人工神经网络这么高深的东西,笔者不太懂,但是作为图像匹配技术出身,我认为这种小case需要那么复杂的东西来完成么?并且训练人工神经网络也是一件麻烦的事情...总之在各种不服气之下,笔者基于图像匹配技术编写了一个

车牌识别--铆钉的去除

车牌识别中,每一步的效果直接影响整体的识别率,对车牌识别产生干扰的,不仅是车牌的污渍,还有铆钉. 一 .举例说明,铆钉干扰使得车牌识别错误 1.车辆图片 2.通过颜色HSV确认车牌大致位置 3.截取车牌图像 4.二值化后,水平投影,从图片中可以很清楚看到铆钉     5.字符分割后的车牌 6.提取分割后的车牌字符 7.错误的识别结果 二.改善方法 这里针对车牌识别的干扰去除方法加以改善. 1.原先博文中车牌识别中去除铆钉的方法,只是用投影的方法.粗略计算铆钉在车牌的上方,白点信息较少,通过水平投

使用opencv的SVM和神经网络实现车牌识别

一.前言 本文参考自<深入理解Opencv 实用计算机视觉项目解析>中的自动车牌识别项目,并对其中的方法理解后,再进行实践.深刻认识到实际上要完成车牌区域准确定位.车牌区域中字符的准确分割,字符准确识别这一系列步骤的困难.所以最后的识别效果也是有待进一步提高. 二.程序流程 程序流程如下所示: 相应的main函数如下 #include "carID_Detection.h" int main() { Mat img_input = imread("testCarI

车牌识别(一)-车牌定位

在对车牌识别过程中,常用的方法有:基于形状.基于色调.基于纹理.基于文字特征等方法.首先基于形状,在车牌中因为车牌为形状规格的矩形,所以目的转化为寻找矩形特征,常常是利用车牌长宽比例特征.占据图像的比例等.基于色调,国内的车牌往往是蓝底白字,可以采用图像的色调或者饱和度特征,进入生成二值图,定位车牌位置.基于纹理特征自己还没有基础到.基于文字特征往往是根据文字轮廓特征进行识别,原理是基于相邻文字轮廓特征.比例进行定位车牌位置. 一.图像二值化 正如前面文章所言,首先进行获取图像二值化特征,本文采