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 相关文章推荐
下载给定网页上图片的方法
Feb 18 Python
Python实现新浪博客备份的方法
Apr 27 Python
Python 解决中文写入Excel时抛异常的问题
May 03 Python
python如何将两个txt文件内容合并
Oct 18 Python
如何解决tensorflow恢复模型的特定值时出错
Feb 06 Python
Python figure参数及subplot子图绘制代码
Apr 18 Python
Python轻量级web框架bottle使用方法解析
Jun 13 Python
Python3.7安装pyaudio教程解析
Jul 24 Python
python raise的基本使用
Sep 10 Python
Python引入多个模块及包的概念过程解析
Sep 21 Python
python 调整图片亮度的示例
Dec 03 Python
Python Flask请求扩展与中间件相关知识总结
Jun 11 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
利用 window_onload 实现select默认选择
2006/10/09 PHP
PhpMyAdmin中无法导入sql文件的解决办法
2010/01/08 PHP
thinkphp普通查询与表达式查询实例分析
2014/11/24 PHP
PHP使用正则表达式实现过滤非法字符串功能示例
2018/06/04 PHP
json 定义
2008/06/10 Javascript
浅析Js中的单引号与双引号问题
2013/11/06 Javascript
jquery选择器之属性过滤选择器详解
2014/01/27 Javascript
JQuery自动触发事件的方法
2015/06/13 Javascript
JavaScript模块规范之AMD规范和CMD规范
2015/10/27 Javascript
jQuery EasyUI之验证框validatebox实例详解
2017/04/10 jQuery
JS仿QQ好友列表展开、收缩功能(第二篇)
2017/07/07 Javascript
微信小程序拍照和摄像功能实现方法示例
2019/02/01 Javascript
vue.js自定义组件实现v-model双向数据绑定的示例代码
2020/01/08 Javascript
[02:57]2014DOTA2国际邀请赛-观众采访
2014/07/19 DOTA
[36:33]2018DOTA2亚洲邀请赛 4.3 突围赛 EG vs Newbee 第二场
2018/04/04 DOTA
python按照多个条件排序的方法
2019/02/08 Python
Python性能分析工具Profile使用实例
2019/11/19 Python
python3实现弹弹球小游戏
2019/11/25 Python
python实现数据清洗(缺失值与异常值处理)
2019/12/02 Python
Python解析多帧dicom数据详解
2020/01/13 Python
selenium 多窗口切换的实现(windows)
2020/01/18 Python
详解Open Folder as PyCharm Project怎么添加的方法
2020/12/29 Python
使用JS+CSS3技术:让你的名字动起来
2013/04/27 HTML / CSS
伦敦最著名的老字号百货公司:Selfridges(塞尔福里奇百货)
2016/07/25 全球购物
Mountain Warehouse澳大利亚官网:欧洲家庭户外品牌倡导者
2016/11/20 全球购物
英国男女奢华内衣和泳装购物网站:Figleaves
2017/01/28 全球购物
世界上最大的在线汽车租赁预订平台:Rentalcars.com(支持中文)
2018/10/12 全球购物
Herve Leger官网:标志性绷带连衣裙等
2018/12/26 全球购物
意大利在线大学图书馆:Libreria universitaria
2019/07/16 全球购物
临床医学专业个人的自我评价
2013/09/27 职场文书
销售部主管岗位职责
2013/12/18 职场文书
职业生涯规划怎么写
2013/12/29 职场文书
服务口号大全
2014/06/11 职场文书
实习协议书范本
2014/09/25 职场文书
学习十八大的感悟
2015/08/11 职场文书
警用民用对讲机找不同
2022/02/18 无线电