版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、ython车牌识别系统开源代码_Python+Tensorflow+CNN实现车牌识别的例代码、项概述本次项标是实现对动成的带有各种噪声的车牌识别。在噪声扰情况下,车牌字符分割较困难,此次车牌识别是将车牌7个字符同时训练,字符包括31个省份简称、10个阿拉伯数字、24个英字母(O和I除外),共有65个类别,7个字符使单独的loss函数进训练。(运环境:tensorflow1.14.0-GPU版)、成车牌数据集import osimport cv2 as cvimport numpy as npfrom math import *from PIL import ImageFontfrom PIL
2、 import Imagefrom PIL import ImageDrawindex = 京: 0,沪: 1,津: 2,渝: 3,冀: 4,晋: 5,蒙: 6,辽: 7,吉: 8,: 9,苏: 10,浙: 11,皖: 12,闽: 13,赣: 14,鲁: 15,豫: 16,鄂: 17,湘: 18,粤: 19,桂: 20,琼: 21,川: 22,贵: 23,云: 24,藏: 25,陕: 26,: 27,青: 28,宁: 29,新: 30,0: 31,1: 32,2: 33,3: 34,4: 35,5: 36,6: 37,7: 38,8: 39,9: 40,A: 41,B: 42,C: 43,D:
3、 44,E: 45,F: 46,G: 47,H: 48,J: 49,K: 50,L: 51,M: 52,N: 53,P: 54,Q: 55,R: 56,S: 57,T: 58,U: 59,V: 60,W: 61,X: 62,Y: 63,Z: 64chars = 京, 沪, 津, 渝, 冀, 晋, 蒙, 辽, 吉, ,苏, 浙, 皖, 闽, 赣, 鲁, 豫, 鄂, 湘, 粤,桂, 琼, 川, 贵, 云, 藏, 陕, , 青, 宁,新, 0, 1, 2, 3, 4, 5, 6, 7, 8,9, A, B, C, D, E, F, G, H, J,K, L, M, N, P, Q, R, S, T,
4、 U,V, W, X, Y, Zdef AddSmudginess(img, Smu):模糊处理:param img: 输图像:param Smu:模糊图像:return: 添加模糊后的图像rows = r(Smu.shape0 - 50)cols = r(Smu.shape1 - 50)adder = Smurows:rows + 50,cols:cols + 50adder = cv.resize(adder, (50, 50)img = cv.resize(img,(50,50)img = cv.bitwise_not(img)img = cv.bitwise_and(adder, im
5、g)img = cv.bitwise_not(img)return imgdef rot(img, angel, shape, max_angel):添加透视畸变size_o = shape1, shape0size = (shape1+ int(shape0 * cos(float(max_angel ) / 180) * 3.14), shape0)interval = abs(int(sin(float(angel) / 180) * 3.14) * shape0)pts1 = np.float32(0, 0, 0, size_o1, size_o0, 0, size_o0, size_
6、o1)if angel 0:pts2 = np.float32(interval, 0, 0, size1, size0, 0, size0 - interval, size_o1)else:pts2 = np.float32(0, 0, interval, size1, size0 - interval, 0, size0, size_o1)M = cv.getPerspectiveTransform(pts1, pts2)dst = cv.warpPerspective(img, M,size)return dstdef rotRandrom(img, factor, size):添加放射
7、畸变:param img: 输图像:param factor: 畸变的参数:param size: 图标尺:return: 放射畸变后的图像shape = sizepts1 = np.float32(0, 0, 0, shape0, shape1, 0, shape1, shape0)pts2 = np.float32(r(factor), r(factor), r(factor), shape0 - r(factor), shape1 - r(factor), r(factor),shape1 - r(factor), shape0 - r(factor)M = cv.getPerspect
8、iveTransform(pts1, pts2)dst = cv.warpPerspective(img, M,size)return dstdef tfactor(img):添加饱和度光照的噪声hsv = cv.cvtColor(img,cv.COLOR_BGR2HSV)hsv:, :, 0 = hsv:, :, 0 * (0.8 + np.random.random() * 0.2)hsv:, :, 1 = hsv:, :, 1 * (0.3 + np.random.random() * 0.7)hsv:, :, 2 = hsv:, :, 2 * (0.2 + np.random.rand
9、om() * 0.8)img = cv.cvtColor(hsv, cv.COLOR_HSV2BGR)return imgdef random_envirment(img, noplate_bg):添加然环境的噪声,noplate_bg为不含车牌的背景图bg_index = r(len(noplate_bg)env = cv.imread(noplate_bgbg_index)env = cv.resize(env, (img.shape1, img.shape0)bak = (img = 0)bak = bak.astype(np.uint8) * 255inv = cv.bitwise_a
10、nd(bak, env)img = cv.bitwise_or(inv, img)return imgdef GenCh(f, val):成中字符img = Image.new(RGB, (45, 70), (255, 255,255)draw = ImageDraw.Draw(img)draw.text(0, 3), val, (0, 0,0), font=f)img = img.resize(23, 70)A = np.array(img)return Adef GenCh1(f, val):成英字符img =Image.new(RGB, (23, 70), (255, 255,255)d
11、raw = ImageDraw.Draw(img)draw.text(0, 2), val, (0, 0,0), font=f) # val.decode(utf-8)A = np.array(img)return Adef AddGauss(img, level):添加斯模糊return cv.blur(img, (level * 2 + 1,level * 2 + 1)def r(val):return int(np.random.random() * val)def AddNoiseSingleChannel(single):添加斯噪声diff = 255 - single.max()n
12、oise = np.random.normal(0, 1 + r(6), single.shape)noise = (noise - noise.min() / (noise.max() - noise.min()noise *= diff# noise= noise.astype(np.uint8)dst = single + noisereturn dstdef addNoise(img): # sdev = 0.5,avg=10img:, :, 0 = AddNoiseSingleChannel(img:, :, 0)img:, :, 1 = AddNoiseSingleChannel(
13、img:, :, 1)img:, :, 2 = AddNoiseSingleChannel(img:, :, 2)return imgclass GenPlate:def _init_(self, fontCh, fontEng, NoPlates):self.fontC = ImageFont.truetype(fontCh, 43,0)self.fontE = ImageFont.truetype(fontEng, 60,0)self.img = np.array(Image.new(RGB, (226, 70),(255, 255,255)self.bg = cv.resize(cv.i
14、mread(dataimagestemplate.bmp), (226, 70) # template.bmp:车牌背景图self.smu = cv.imread(dataimagessmu2.jpg) # smu2.jpg:模糊图像self.noplates_path = for parent, parent_folder, filenames in os.walk(NoPlates):for filename in filenames:path = parent + + filenameself.noplates_path.append(path)def draw(self, val):o
15、ffset = 2self.img0:70, offset+8:offset+8+23 = GenCh(self.fontC, val0)self.img0:70, offset+8+23+6:offset+8+23+6+23 = GenCh1(self.fontE, val1)for i in range(5):base = offset + 8 + 23 + 6 + 23 + 17 + i * 23 + i * 6self.img0:70, base:base+23 = GenCh1(self.fontE, vali+2)return self.imgdef generate(self,
16、text):if len(text) = 7:fg = self.draw(text) # decode(encoding=utf-8)fg = cv.bitwise_not(fg)com = cv.bitwise_or(fg, self.bg)com = rot(com, r(60)-30, com.shape,30)com = rotRandrom(com, 10,(com.shape1, com.shape0)com = tfactor(com)com = random_envirment(com, self.noplates_path)com = AddGauss(com, 1+r(4
17、)com = addNoise(com)return comstaticmethoddef genPlateString(pos, val):成车牌string,存为图成车牌list,存为labelplateStr = plateList=box = 0, 0,0,0,0,0,0if pos != -1:boxpos = 1for unit, cpos in zip(box, range(len(box):if unit = 1:plateStr += valplateList.append(val)else:if cpos = 0:plateStr += charsr(31)plateLis
18、t.append(plateStr)elif cpos = 1:plateStr += chars41 + r(24)plateList.append(plateStr)else:plateStr += chars31 + r(34)plateList.append(plateStr)plate = plateList0b = plateListi-1 for i in range(len(plateList)plate.extend(b1:7)return plateStr, platestaticmethoddef genBatch(batchsize, outputPath, size):将成的车牌图写件夹,对应的label写label.txt:param batchsize: 批次:param outputPath: 输出图像的保存路径:param size: 输出图像的尺:return: Noneif not os.path.exists(outputPath):os.mkdir(outputPath)outfile = open(dataplatelabel.txt, w, encoding=utf-8)for i in range(batchsize):plateStr, plate = G.genPlate
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年度年福建省高校教师资格证之高等教育心理学每日一练试卷A卷含答案
- 二年级数学计算题专项练习
- 地质灾害治理施工组织设计方案
- 2024年新型防腐木建设协议范本
- 2024年委托管理权限规范协议细则
- 2024年新轿车租赁协议规范
- 2024年食品配送服务协议细则
- 2024年度品牌宣传合作协议
- 观察循证护理在ICU脑卒中患者床旁盲插螺旋形鼻肠管中的应用
- 多人股权转让协议样本:修订
- 绿色食品、有机食品和无公害食品课件
- 扩张型心肌病诊断和治疗指南
- 电子小报社团教案
- 八大特殊作业安全试题题库
- 标签打印管理办法及流程
- 五四制青岛版2022-2023五年级科学上册第五单元第19课《生物的栖息地》课件(定稿)
- DB65∕T 3253-2020 建筑消防设施质量检测评定规程
- 四年级上册美术教案15《有创意的书》人教版
- 否定词否定句课件(PPT 38页)
- 水力学第12章 相似理论-2015
- 第7章国际资本流动与国际金融危机
评论
0/150
提交评论