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 22 Python
初学python的操作难点总结(新手必看篇)
Aug 03 Python
python+numpy+matplotalib实现梯度下降法
Aug 31 Python
python实现画五角星和螺旋线的示例
Jan 20 Python
Python3.4学习笔记之列表、数组操作示例
Mar 01 Python
django celery redis使用具体实践
Apr 08 Python
Django给admin添加Action的步骤详解
May 01 Python
Python制作词云图代码实例
Sep 09 Python
keras用auc做metrics以及早停实例
Jul 02 Python
pycharm全局搜索的具体步骤
Jul 28 Python
pycharm 添加解释器的方法步骤
Aug 31 Python
python开发一个解析protobuf文件的简单编译器
Nov 17 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
PHP中的正规表达式(一)
2006/10/09 PHP
PHP中strtotime函数使用方法分享
2012/01/10 PHP
PHP+Jquery与ajax相结合实现下拉淡出瀑布流效果【无需插件】
2016/05/06 PHP
php实现与python进行socket通信的方法示例
2017/08/30 PHP
php对象工厂类完整示例
2018/08/09 PHP
jquery URL参数判断,确定菜单样式
2010/05/31 Javascript
(跨浏览器基础事件/浏览器检测/判断浏览器)经验代码分享
2013/01/24 Javascript
javascript获取ckeditor编辑器的值(实现代码)
2013/11/18 Javascript
jQuery截取指定长度字符串代码
2014/08/21 Javascript
jQuery实现dialog设置focus焦点的方法
2015/06/10 Javascript
jQuery往textarea中光标所在位置插入文本的方法
2015/06/26 Javascript
Jquery跨浏览器文本复制插件Zero Clipboard的使用方法
2016/02/28 Javascript
Angular.js 实现数字转换汉字实例代码
2016/07/14 Javascript
基于Bootstrap table组件实现多层表头的实例代码
2017/09/07 Javascript
浅谈ES6 模板字符串的具体使用方法
2017/11/07 Javascript
使用Angular CLI进行单元测试和E2E测试的方法
2018/03/24 Javascript
微信小程序实现弹幕墙(祝福墙)
2020/11/18 Javascript
Python中使用Boolean操作符做真值测试实例
2015/01/30 Python
python的keyword模块用法实例分析
2015/06/30 Python
12步教你理解Python装饰器
2016/02/25 Python
导入tensorflow:ImportError: libcublas.so.9.0 报错
2020/01/06 Python
Python中import导入不同目录的模块方法详解
2020/02/18 Python
快速了解Python开发环境Spyder
2020/06/29 Python
python 最简单的实现适配器设计模式的示例
2020/06/30 Python
英国最受欢迎的手表网站:Watch Shop
2016/10/21 全球购物
Gerry Weber德国官网:优质女性时装,德国最大的时装公司之一
2019/11/02 全球购物
乌克兰在线电子产品商店:MTA
2019/11/14 全球购物
学校献爱心活动总结
2014/07/08 职场文书
个人授权委托书格式
2014/08/30 职场文书
正风肃纪剖析材料
2014/09/30 职场文书
限期整改通知书
2015/04/22 职场文书
教你使用TensorFlow2识别验证码
2021/06/11 Python
用Python爬取某乎手机APP数据
2021/06/15 Python
VS2019连接MySQL数据库的过程及常见问题总结
2021/11/27 MySQL
MySQL创建管理LIST分区
2022/04/13 MySQL
Redis Lua脚本实现ip限流示例
2022/07/15 Redis