HyperLPR车牌识别库代码分析(9)

2021SC@SDUSC

源代码下载地址:https://gitee.com/zeusees/HyperLPR

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

 本篇内容将总结之前所分析的SimpleRecognizePlateByE2E()函数:

一、源码

def SimpleRecognizePlateByE2E(image):
    t0 = time.time()
    images = detect.detectPlateRough(image,image.shape[0],top_bottom_padding_rate=0.1)
    res_set = []
    for j,plate in enumerate(images):
        plate, rect, origin_plate  =plate
        plate  =cv2.resize(plate,(136,36*2))
        res,confidence = e2e.recognizeOne(origin_plate)
        print "res",res

        t1 = time.time()
        ptype = td.SimplePredict(plate)
        if ptype>0 and ptype<5:
            plate = cv2.bitwise_not(plate)
        image_rgb = fm.findContoursAndDrawBoundingBox(plate)
        image_rgb = fv.finemappingVertical(image_rgb)
        image_rgb = fv.finemappingVertical(image_rgb)
        cache.verticalMappingToFolder(image_rgb)
        res,confidence = e2e.recognizeOne(image_rgb)
        print res,confidence
        res_set.append([[],res,confidence])

        if confidence>0.7:
            image = drawRectBox(image, rect, res+" "+str(round(confidence,3)))
    return image,res_set

二、总结

image.shape[]数组含义如下:

        image.shape[0], 图片垂直尺寸

        image.shape[1], 图片水平尺寸

        image.shape[2], 图片通道数

函数功能总结:

        首先获得当前系统时间。随后对图片进行粗定位,将图片转为黑白的照片,并通过cv2中的detectMultiScale识别车牌位置,最后粗略地裁剪图片到车牌位置。

        在for循环中,先将图片复制三份保存用于后续处理,对plate中的图片进行指定大小裁剪,对origin_plate进行recognizeOne操作,随后将返回值res输出,之后也并未用到res和该confidence。

        再次获取系统时间后,SimplePredict()先对图片进行裁剪操作,再用astype进行强制类型转换防止溢出。针对这些图片进行预测,然后返回图像的维度的最大值。当该值位于0~5之间时,对图像(灰度图像或彩色图像均可)每个像素值进行二进制“非”操作,~1=0,~0=1。

        接下来对图片进行精定位,使用findContoursAndDrawBoundingBox(...)将车牌具体位置进行定位,定位后如下:

随后进行两次finemappingVertical()操作再对图片进行进一步的裁剪,将各个文字的左右边界裁剪下来,识别出文字。

        随后将图片进行utf-8加密后保存。再对已精定位处理过后的图片进行识别,得出车牌号码,插入数组尾部,再对下一张照片进行上述操作获得车牌。

        最后当处理好的文件可信度大于0.7时,将对一开始输入进行识别的图片中,框出识别出的车牌并显示车牌号码。drawRectBox函数用于打上boundingbox和标签(为之前函数生成的车牌号码)。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值