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文件操作相关知识点总结整理
Feb 22 Python
Python的Django中将文件上传至七牛云存储的代码分享
Jun 03 Python
python3实现基于用户的协同过滤
May 31 Python
解决pycharm运行时interpreter为空的问题
Oct 29 Python
Python类和对象的定义与实际应用案例分析
Dec 27 Python
解决项目pycharm能运行,在终端却无法运行的问题
Jan 19 Python
python实现二维数组的对角线遍历
Mar 02 Python
python 读写excel文件操作示例【附源码下载】
Jun 19 Python
Python中输入和输出(打印)数据实例方法
Oct 13 Python
TensorFlow2.X使用图片制作简单的数据集训练模型
Apr 08 Python
如何在python中执行另一个py文件
Apr 30 Python
matplotlib源码解析标题实现(窗口标题,标题,子图标题不同之间的差异)
Feb 22 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
E路文章系统PHP
2006/12/11 PHP
php Try Catch异常测试
2009/03/01 PHP
PHP调用VC编写的COM组件实例
2014/03/29 PHP
ucenter通信原理分析
2015/01/09 PHP
PHP实现算式验证码和汉字验证码实例
2015/03/09 PHP
php数组函数array_push()、array_pop()及array_shift()简单用法示例
2020/01/26 PHP
给网站上的广告“加速”显示的方法
2007/04/08 Javascript
“不能执行已释放的Script代码”错误的原因及解决办法
2007/09/09 Javascript
javascript 继承实现方法
2009/08/26 Javascript
jquery中对于批量deferred的处理方法
2014/01/22 Javascript
JavaScript 学习笔记之语句
2015/01/14 Javascript
js闭包实现按秒计数
2015/04/23 Javascript
浅谈JS原型对象和原型链
2016/03/02 Javascript
使用nodejs实现JSON文件自动转Excel的工具(推荐)
2020/06/24 NodeJs
Python面向对象基础入门之编码细节与注意事项
2018/12/11 Python
Django之路由层的实现
2019/09/09 Python
python 表格打印代码实例解析
2019/10/12 Python
python的sys.path模块路径添加方式
2020/03/09 Python
基于python实现数组格式参数加密计算
2020/04/21 Python
python中_del_还原数据的方法
2020/12/09 Python
python快速安装OpenCV的步骤记录
2021/02/22 Python
CSS3线性渐变简单实现以及该属性在浏览器中的不同
2012/12/12 HTML / CSS
CSS3的Border-radius轻松制作圆角
2012/12/24 HTML / CSS
详解Canvas 实现炫丽的粒子运动效果(粒子生成文字)
2018/02/01 HTML / CSS
HTML5中5个简单实用的API(第二篇,含全屏、可见性、拍照、预加载、电池状态)
2014/05/07 HTML / CSS
HTML5响应式(自适应)网页设计的实现
2017/11/17 HTML / CSS
Java面试中常遇到的问题,也是需要注意的几点
2013/08/30 面试题
Internal修饰符有什么含义
2013/07/10 面试题
毕业生个人的自我评价优秀范文
2013/10/03 职场文书
五水共治捐款倡议书
2014/05/14 职场文书
党支部综合考察材料
2014/05/19 职场文书
2014年远程教育工作总结
2014/12/09 职场文书
肖申克的救赎观后感
2015/06/02 职场文书
地心历险记观后感
2015/06/15 职场文书
教师理论学习心得体会
2016/01/21 职场文书
springboot + mongodb 通过经纬度坐标匹配平面区域的方法
2021/11/01 MongoDB