python+pyhyper实现识别图片中的车牌号思路详解


Posted in Python onDecember 24, 2022

背景

最近领导给布置了一个基于图片识别车牌号的工具开发任务,然后就去研究实现逻辑,自己根据opencv写了一个小demo,发现不仅速度慢而且成功率极低。然后,就找到了Hyperlpr开源项目。

环境搭建

排雷1:有教程说在github上下载源码:https://github.com/zeusees/HyperLPR,自己编译,结果github上已经停止维护了,然后再gitee找到了:Hyperlpr项目
排雷2:hyperlpr环境搭建比较苛刻,建议直接在requirements.txt文件中维护好版本号

实现:
我是直接pip install hyperlpr 安装的

python+pyhyper实现识别图片中的车牌号思路详解

验证

import cv2
from hyperlpr import HyperLPR_plate_recognition

if __name__ == '__main__':
    image = cv2.imread("one.jpeg")
    result = HyperLPR_plate_recognition(image)

报错:

    mat_ = cv2.estimateRigidTransform(org_pts, target_pts, True)
AttributeError: module 'cv2' has no attribute 'estimateRigidTransform'

修改hyperlpr.py文件,大概在231行

mat_ = cv2.estimateRigidTransform(org_pts, target_pts, True)
修改为

mat_,inlier = cv2.estimateAffine2D(org_pts, target_pts)

再次执行,执行成功,返回一个列表,依次是车牌号,准确率,车牌号在图片中的坐标

python+pyhyper实现识别图片中的车牌号思路详解

二次开发

经过实验发现,如果图片中存在多个车牌号,只能识别图片中的一个车牌号

拜读源码发现self.detect_ssd(image)函数返回的是一个可迭代变量,追踪进去应该可以发现点东西

python+pyhyper实现识别图片中的车牌号思路详解

和猜测一致,self.detect_ssd(image)返回的是一个列表,但是找到一个车牌就返回了,只需要将 return cropped_images 放到for循环外卖外面即可
修改前:

python+pyhyper实现识别图片中的车牌号思路详解

修改后:

python+pyhyper实现识别图片中的车牌号思路详解

验证:

python+pyhyper实现识别图片中的车牌号思路详解

标记

附源码:

python+pyhyper实现识别图片中的车牌号思路详解

import cv2
import numpy as np
from PIL import ImageFont, Image, ImageDraw
from hyperlpr import HyperLPR_plate_recognition

if __name__ == '__main__':
    image = cv2.imread("two.jpeg")
    result = HyperLPR_plate_recognition(image)
    print(result)
    # 标记车牌号
    if result:
        for index, item in enumerate(result):
            # 车牌号
            car_code = item[0]
            # 可信度
            conf = item[1]
            # 车牌框左上角坐标
            pt1 = (item[2][0], item[2][1])
            # 车牌框右下角坐标
            pt2 = (item[2][2], item[2][3])
            # 绘制车牌框
            cv2.rectangle(image, pt1=pt1, pt2=pt2, color=(255, 0, 0), thickness=3)
            # 设置需要显示的字体
            font_path = 'fonts/simsun.ttc'
            font = ImageFont.truetype(font_path, size=40, index=1)
            image = Image.fromarray(image)
            draw = ImageDraw.Draw(image)
            # 绘制文字信息
            draw.text((pt1[0] + 30, pt1[1] - 30), car_code, font=font, fill=(0, 0, 255))
            image = np.array(image)
        # cv2.namedWindow('image', 0)
        # cv2.imshow('image', image)
        # cv2.waitKey(100000)
        cv2.imwrite('d:/two.jpeg', image)

到此这篇关于python+pyhyper实现识别图片中的车牌号的文章就介绍到这了,更多相关python车牌号识别内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
详解用python自制微信机器人,定时发送天气预报
Mar 25 Python
24式加速你的Python(小结)
Jun 13 Python
Flask框架中request、请求钩子、上下文用法分析
Jul 23 Python
django 控制页面跳转的例子
Aug 06 Python
python的等深分箱实例
Nov 22 Python
PyTorch中Tensor的数据统计示例
Feb 17 Python
Django表单提交后实现获取相同name的不同value值
May 14 Python
5款实用的python 工具推荐
Oct 13 Python
把Anaconda中的环境导入到Pycharm里面的方法步骤
Oct 30 Python
python 实现图片批量压缩的示例
Dec 18 Python
Pyecharts 中Geo函数常用参数的用法说明
Feb 01 Python
python 遍历磁盘目录的三种方法
Apr 02 Python
python pandas 解析(读取、写入)CSV 文件的操作方法
Dec 24 #Python
Python TypeError: ‘float‘ object is not subscriptable错误解决
Dec 24 #Python
python 使用pandas读取csv文件的方法
Dec 24 #Python
Python使用pandas导入csv文件内容的示例代码
Dec 24 #Python
python如何利用cv2.rectangle()绘制矩形框
Dec 24 #Python
Python中np.random.randint()参数详解及用法实例
Sep 23 #Python
Python中tqdm的使用和例子
Sep 23 #Python
You might like
PHP5 操作MySQL数据库基础代码
2009/09/29 PHP
PHP的可变变量名的使用方法分享
2012/02/05 PHP
js限制checkbox勾选的个数以及php获取多个checkbbox的方法深入解析
2013/07/18 PHP
ThinkPHP中的常用查询语言汇总
2014/08/22 PHP
php构造函数的继承方法
2015/02/09 PHP
PHP将MySQL的查询结果转换为数组并用where拼接的示例
2016/05/13 PHP
PHP设计模式之模板模式定义与用法详解
2018/12/20 PHP
Javascript 实用小技巧
2010/04/07 Javascript
js内置对象 学习笔记
2011/08/01 Javascript
javascript针对DOM的应用分析(四)
2012/04/15 Javascript
JS增加行复制行删除行的实现代码
2013/11/09 Javascript
写给小白的JavaScript引擎指南
2015/12/04 Javascript
简单讲解AngularJS的Routing路由的定义与使用
2016/03/05 Javascript
一个简单不报错的summernote 图片上传案例
2016/07/11 Javascript
js获取腾讯视频ID的方法
2016/10/03 Javascript
AngularJS前端页面操作之用户修改密码功能示例
2017/03/27 Javascript
JavaScript中正则表达式判断匹配规则及常用方法
2017/08/03 Javascript
vue中实现图片和文件上传的示例代码
2018/03/16 Javascript
微信小程序用canvas画图并分享
2020/03/09 Javascript
Python计算字符宽度的方法
2016/06/14 Python
Python批量提取PDF文件中文本的脚本
2018/03/14 Python
利用scrapy将爬到的数据保存到mysql(防止重复)
2018/03/31 Python
pandas 对日期类型数据的处理方法详解
2019/08/08 Python
tensorflow 分类损失函数使用小记
2020/02/18 Python
IE矩阵Matrix滤镜旋转与缩放及如何结合transform
2012/11/29 HTML / CSS
巴西最大的家具及装饰用品店:Mobly
2017/10/11 全球购物
安全负责人任命书
2014/06/06 职场文书
交通志愿者活动总结
2014/06/27 职场文书
2014国庆节幼儿园亲子活动方案
2014/09/16 职场文书
党员个人剖析材料(四风问题)
2014/10/07 职场文书
出纳工作检讨书
2014/10/18 职场文书
2014年作风建设心得体会
2014/10/22 职场文书
装饰施工员岗位职责
2015/04/11 职场文书
党员观看《筑梦中国》心得体会
2016/01/18 职场文书
jQuery ajax - getScript() 方法和getJSON方法
2021/05/14 jQuery
css3中2D转换之有趣的transform形变效果
2022/02/24 HTML / CSS