基于HyperLPR的车牌识别(十)

阅读: 评论:0

基于HyperLPR的车牌识别(十)

基于HyperLPR的车牌识别(十)

2021SC@SDUSC

源代码下载地址:HyperLPR: HyperLRP是一个开源的、基于深度学习高性能中文车牌识别库,由北京智云视图科技有限公司开发,支持PHP、C/C++、Python语言,Windows/Mac/Linux/Android/IOS 平台。

源码配置的详情见第一篇分析

这次主要分析detect.detectPlateRough()函数,当前文件引入了hyperlpr_py3文件夹下的detect.py文件的detectPlateRough()函数,含义为检测板材粗糙度,对图片进行粗糙度检测并进行有效修剪

def detectPlateRough(image_gray,resize_h = 720,en_scale =1.08 ,top_bottom_padding_rate = 0.05):print(image_gray.shape)if top_bottom_padding_rate>0.2:print("error:top_bottom_padding_rate > 0.2:",top_bottom_padding_rate)exit(1)height = image_gray.shape[0]padding =    int(height*top_bottom_padding_rate)scale = image_gray.shape[1]/float(image_gray.shape[0])image = size(image_gray, (int(scale*resize_h), resize_h))image_color_cropped = image[padding:resize_h-padding,0:image_gray.shape[1]]image_gray = cv2.cvtColor(image_color_cropped,cv2.COLOR_RGB2GRAY)watches = watch_cascade.detectMultiScale(image_gray, en_scale, 2, minSize=(36, 9),maxSize=(36*40, 9*40))cropped_images = []for (x, y, w, h) in watches:cropped_origin = cropped_from_image(image_color_cropped, (int(x), int(y), int(w), int(h)))x -= w * 0.14w += w * 0.28y -= h * 0.6h += h * 1.1;cropped = cropped_from_image(image_color_cropped, (int(x), int(y), int(w), int(h)))cropped_images.append([cropped,[x, y+padding, w, h],cropped_origin])return cropped_images

传入的形参image_gray,resize_h = 720,en_scale =1.08 ,top_bottom_padding_rate = 0.05的含义分别为图片本身,图片调整大小的高度,图片缩放比例以及头部底部与内边距的比率

对头部底部与内边距的比率进行判断,若不在规定大小则结束该错误退出改该编译器

height = image_gray.shape[0]
padding =    int(height*top_bottom_padding_rate)
scale = image_gray.shape[1]/float(image_gray.shape[0])
获取图片的垂直高度,内边距大小以及图片宽与高之比

image = size(image_gray, (int(scale*resize_h), resize_h))
引用了库cv2,函数resize()是根据传入的图片本身image_gray,图片调整的宽度以及图片调整的高度对图片进行缩放,返回一个完成缩放的图片

image_color_cropped = image[padding:resize_h-padding,0:image_gray.shape[1]]


函数image_color_cropped()是根据颜色来裁剪图片,其调用了opencv中的方法,目的是裁剪出车牌照中的车牌图片,除去其他的无关的东西,为之后的分析图片做出有效处理

image_gray = cv2.cvtColor(image_color_cropped,cv2.COLOR_RGB2GRAY)


引用库cv2,函数cvtColor()是根据已裁剪完成的图片image_color_cropped并将其转换成灰度图片

 watches = watch_cascade.detectMultiScale(image_gray, en_scale, 2, minSize=(36, 9),maxSize=(36*40, 9*40))


 
#watch_cascade来自
watch_cascade = cv2.CascadeClassifier('./l')
引用库cv2,调用了函数CascadeClassifier()与函数detectMultiScale()

函数CascadeClassifier():是Opencv中做人脸检测的时候的一个级联分类器。并且既可以使用Haar,也可以使用LBP特征

函数detectMultiScale():opencv2中人脸检测使用的是 detectMultiScale函数。它可以检测出图片中所有的人脸,并将人脸用vector保存各个人脸的坐标、大小(用矩形表示)

则通过传输的数据可知,调用这两个函数的目的为对于经过处理后的图片,识别出车牌的具体的位置和大小并且作为数组储存起来
 

本文发布于:2024-02-01 01:38:51,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170672272932915.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:车牌   HyperLPR
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23