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 Mysql自动备份脚本
Jul 14 Python
Python删除指定目录下过期文件的2个脚本分享
Apr 10 Python
Python base64编码解码实例
Jun 21 Python
python字典多键值及重复键值的使用方法(详解)
Oct 31 Python
python登录并爬取淘宝信息代码示例
Dec 09 Python
用PyInstaller把Python代码打包成单个独立的exe可执行文件
May 26 Python
Python基础教程之if判断,while循环,循环嵌套
Apr 25 Python
使用pygame写一个古诗词填空通关游戏
Dec 03 Python
使用pytorch搭建AlexNet操作(微调预训练模型及手动搭建)
Jan 18 Python
pycharm如何使用anaconda中的各种包(操作步骤)
Jul 31 Python
Python reversed反转序列并生成可迭代对象
Oct 22 Python
Python爬虫之爬取某文库文档数据
Apr 21 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 strlen mb_strlen计算中英文混排字符串长度
2009/07/10 PHP
PHP UTF8编码内的繁简转换类
2009/07/20 PHP
基于php导出到Excel或CSV的详解(附utf8、gbk 编码转换)
2013/06/25 PHP
PHP面向对象之后期静态绑定功能介绍
2015/05/18 PHP
PHP入门教程之数学运算技巧总结
2016/09/11 PHP
thinkPHP5.0框架自动加载机制分析
2017/03/18 PHP
php设计模式之策略模式应用案例详解
2019/06/17 PHP
常见的5个PHP编码小陋习以及优化实例讲解
2021/02/27 PHP
JavaScript 应用类库代码
2008/06/02 Javascript
jquery 年会抽奖程序
2011/12/22 Javascript
面向对象Javascript核心支持代码分享
2012/05/23 Javascript
JavaScript利用正则表达式去除日期中的“-”
2014/07/01 Javascript
jquery ajax后台返回list,前台用jquery遍历list的实现
2016/10/30 Javascript
jQuery实现文档树效果
2017/02/20 Javascript
bootstrap treeview 扩展addNode方法动态添加子节点的方法
2017/11/21 Javascript
从vue源码解析Vue.set()和this.$set()
2018/08/30 Javascript
Vue实现本地购物车功能
2018/12/05 Javascript
vue 自定义组件的写法与用法详解
2020/03/04 Javascript
Vue仿百度搜索功能
2020/12/28 Vue.js
Python学习之asyncore模块用法实例教程
2014/09/29 Python
Python可跨平台实现获取按键的方法
2015/03/05 Python
使用Python来编写HTTP服务器的超级指南
2016/02/18 Python
Python常见工厂函数用法示例
2018/03/21 Python
python脚本生成caffe train_list.txt的方法
2018/04/27 Python
Tensorflow 查看变量的值方法
2018/06/14 Python
python实现自动解数独小程序
2019/01/21 Python
Python Pandas数据结构简单介绍
2019/07/03 Python
Python流程控制 while循环实现解析
2019/09/02 Python
python的setattr函数实例用法
2020/12/16 Python
详解Html5 监听拦截Android返回键方法
2018/04/18 HTML / CSS
Stella McCartney官网:成衣、包袋、香水、内衣、童装及Adidas系列
2018/12/20 全球购物
汉语言文学职业规划
2014/02/14 职场文书
查摆剖析材料范文
2014/09/30 职场文书
2015年党员创先争优承诺书
2015/01/22 职场文书
会计出纳岗位职责
2015/03/31 职场文书
tensorflow学习笔记之tfrecord文件的生成与读取
2021/03/31 Python