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输出指定月份日历的方法
Apr 23 Python
apache部署python程序出现503错误的解决方法
Jul 24 Python
Python多进程multiprocessing用法实例分析
Aug 18 Python
Python实现扩展内置类型的方法分析
Oct 16 Python
基于DataFrame筛选数据与loc的用法详解
May 18 Python
padas 生成excel 增加sheet表的实例
Dec 11 Python
详解python校验SQL脚本命名规则
Mar 22 Python
django settings.py 配置文件及介绍
Jul 15 Python
python nohup 实现远程运行不宕机操作
Apr 16 Python
如何快速理解python的垃圾回收机制
Sep 01 Python
Python-openpyxl表格读取写入的案例详解
Nov 02 Python
基于python实现监听Rabbitmq系统日志代码示例
Nov 28 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
索尼SONY SRF-S83/84电路分析和打磨
2021/03/02 无线电
php获取新浪微博数据API实例
2013/11/12 PHP
PHP中文乱码解决方案
2015/03/05 PHP
Yii视图CGridView实现操作按钮定义地址示例
2016/07/14 PHP
ThinkPHP3.2框架使用addAll()批量插入数据的方法
2017/03/16 PHP
php读取出一个文件夹及其子文件夹下所有文件的方法示例
2017/06/15 PHP
Nigma vs Liquid BO3 第一场2.13
2021/03/10 DOTA
js自带函数备忘 数组
2006/12/29 Javascript
jquery 事件执行检测代码
2009/12/09 Javascript
解决jQuery插件tipswindown与hintbox冲突
2010/11/05 Javascript
javascript学习(二)javascript常见问题总结
2013/01/02 Javascript
用JavaScript实现动画效果的方法
2013/07/20 Javascript
js实现3D图片逐张轮播幻灯片特效代码分享
2015/09/09 Javascript
jquery 判断selection range 是否在容器中的简单实例
2016/08/02 Javascript
JS简单生成两个数字之间随机数的方法
2016/08/03 Javascript
微信小程序 Toast自定义实例详解
2017/01/20 Javascript
javaScript实现滚动条事件详解
2020/03/24 Javascript
vue-cli构建项目使用 less的方法
2017/10/04 Javascript
Python操作RabbitMQ服务器实现消息队列的路由功能
2016/06/29 Python
浅谈django开发者模式中的autoreload是如何实现的
2017/08/18 Python
浅谈python可视化包Bokeh
2018/02/07 Python
python如何实现int函数的方法示例
2018/02/19 Python
Linux(Redhat)安装python3.6虚拟环境(推荐)
2018/05/05 Python
解决Django数据库makemigrations有变化但是migrate时未变动问题
2018/05/30 Python
wxpython自定义下拉列表框过程图解
2020/02/14 Python
DHC美国官网:日本通信销售第一的化妆品品牌
2017/11/12 全球购物
铭宣海淘转运:美国、日本、英国转运等全球转运公司
2019/09/10 全球购物
Nixon手表英国官网:美国尼克松手表品牌
2020/02/10 全球购物
办公室岗位职责
2014/02/12 职场文书
物流毕业生个人的自我评价
2014/02/13 职场文书
2014道德模范事迹材料
2014/02/16 职场文书
商务经理岗位职责
2014/07/30 职场文书
计算机科学与技术专业求职信
2014/09/03 职场文书
2015年政风行风工作总结
2015/04/21 职场文书
解决Golang中goroutine执行速度的问题
2021/05/02 Golang
Win10开机修复磁盘错误怎么跳过?Win10关闭开机磁盘检查的方法
2022/09/23 数码科技