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常用方法和技巧
May 18 Python
浅述python2与python3的简单区别
Sep 19 Python
python中的for循环
Sep 28 Python
python 将大文件切分为多个小文件的实例
Jan 14 Python
Python 旋转打印各种矩形的方法
Jul 09 Python
Python 中的 global 标识对变量作用域的影响
Aug 12 Python
手写一个python迭代器过程详解
Aug 27 Python
pycharm 中mark directory as exclude的用法详解
Feb 14 Python
Django+python服务器部署与环境部署教程详解
Mar 30 Python
python如何查看安装了的模块
Jun 23 Python
浅谈Django前端后端值传递问题
Jul 15 Python
利用Python将多张图片合成视频的实现
Nov 23 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 iconv函数的使用详解
2013/06/09 PHP
6个超实用的PHP代码片段
2015/08/10 PHP
php mysql获取表字段名称和字段信息的三种方法
2016/11/13 PHP
完美解决在ThinkPHP控制器中命名空间的问题
2017/05/05 PHP
php数组遍历类与用法示例
2019/05/24 PHP
解决PhpStorm64不能启动的问题
2020/06/20 PHP
javascript中巧用“闭包”实现程序的暂停执行功能
2007/04/04 Javascript
JavaScript flash复制库类 Zero Clipboard
2011/01/17 Javascript
真正的JQuery.ajax传递中文参数的解决方法
2011/05/28 Javascript
用JS做的简单的可折叠的两级树形菜单
2013/09/21 Javascript
js取得html iframe中的元素和变量值
2014/06/30 Javascript
jquery 根据name名获取元素的value值
2015/02/27 Javascript
JavaScript数组随机排列实现随机洗牌功能
2015/03/19 Javascript
JavaScript中getUTCMinutes()方法的使用详解
2015/06/10 Javascript
js实现密码强度检验
2017/01/15 Javascript
原生JS实现左右箭头选择日期实例代码
2017/03/14 Javascript
ES6中新增的Object.assign()方法详解
2017/09/22 Javascript
浅谈Angular文字折叠展开组件的原理分析
2017/11/24 Javascript
vue src动态加载请求获取图片的方法
2018/10/17 Javascript
javascript面向对象创建对象的方式小结
2019/07/29 Javascript
JS中this的4种绑定规则详解
2020/02/04 Javascript
js实现炫酷光感效果
2020/09/05 Javascript
解决vue watch数据的方法被调用了两次的问题
2020/11/07 Javascript
[41:56]Spirit vs Liquid Supermajor小组赛A组 BO3 第一场 6.2
2018/06/03 DOTA
Linux下安装python3.6和第三方库的教程详解
2018/11/09 Python
Python实现繁?转为简体的方法示例
2018/12/18 Python
Python3爬虫全国地址信息
2019/01/05 Python
解决Django提交表单报错:CSRF token missing or incorrect的问题
2020/03/13 Python
浅谈Python中的生成器和迭代器
2020/06/19 Python
Django创建一个后台的基本步骤记录
2020/10/02 Python
利用Python将多张图片合成视频的实现
2020/11/23 Python
黄河象教学反思
2014/02/10 职场文书
机修工工作职责
2014/02/21 职场文书
二手房购房意向书范本
2014/04/01 职场文书
蓝颜请假条
2014/04/11 职场文书
先进事迹材料怎么写
2014/12/30 职场文书