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 生成目录树及显示文件大小的代码
Jul 23 Python
使用Python脚本来获取Cisco设备信息的示例
May 04 Python
python3操作微信itchat实现发送图片
Feb 24 Python
自适应线性神经网络Adaline的python实现详解
Sep 30 Python
Python如何使用字符打印照片
Jan 03 Python
pytorch之ImageFolder使用详解
Jan 06 Python
Python实现企业微信机器人每天定时发消息实例
Feb 25 Python
详解pandas绘制矩阵散点图(scatter_matrix)的方法
Apr 23 Python
解决Ubuntu18中的pycharm不能调用tensorflow-gpu的问题
Sep 17 Python
浅谈Selenium 控制浏览器的常用方法
Dec 04 Python
Python控制台输出俄罗斯方块移动和旋转功能
Apr 18 Python
python图片灰度化处理的几种方法
Jun 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 文章调用类代码
2011/08/11 PHP
PHP代码网站如何防范SQL注入漏洞攻击建议分享
2012/03/01 PHP
php计算数组不为空元素个数的方法
2014/01/27 PHP
php常用字符串处理函数实例分析
2014/11/22 PHP
PHPCMS V9 添加二级导航的思路详解
2016/10/20 PHP
PHP开发api接口安全验证操作实例详解
2020/03/26 PHP
Extjs ajax同步请求时post方式参数发送方式
2009/08/05 Javascript
JQuery Ajax通过Handler访问外部XML数据的代码
2010/06/01 Javascript
JavaScript高级程序设计 阅读笔记(十七) js事件
2012/08/14 Javascript
Jquery实现控件的隐藏和显示实例
2014/02/08 Javascript
深入理解requestAnimationFrame的动画循环
2016/09/20 Javascript
基于angular中的重要指令详解($eval,$parse和$compile)
2016/10/21 Javascript
利用Query+bootstrap和js两种方式实现日期选择器
2017/01/10 Javascript
jQuery对table表格进行增删改查
2020/12/22 Javascript
Jquery中attr与prop的区别详解
2017/05/27 jQuery
JS实现图片居中悬浮效果
2017/12/25 Javascript
vue.js内置组件之keep-alive组件使用
2018/07/10 Javascript
Fundebug支持监控微信小程序HTTP请求错误的方法
2019/02/21 Javascript
vue.js 2.0实现简单分页效果
2019/07/29 Javascript
layui在form表单页面通过Validform加入简单验证的方法
2019/09/06 Javascript
Python入门篇之文件
2014/10/20 Python
编写Python脚本把sqlAlchemy对象转换成dict的教程
2015/05/29 Python
python爬虫之xpath的基本使用详解
2018/04/18 Python
Python运行不显示DOS窗口的解决方法
2018/10/22 Python
python基于itchat模块实现微信防撤回
2019/04/29 Python
基于Python 中函数的 收集参数 机制
2019/12/21 Python
pycharm 关掉syntax检查操作
2020/06/09 Python
Python解析微信dat文件的方法
2020/11/30 Python
Python 实现进度条的六种方式
2021/01/06 Python
HTML5的标签的代码的简单介绍 HTML5标签的简介
2012/05/28 HTML / CSS
Europcar英国:英国汽车和货车租赁
2017/01/21 全球购物
英国假睫毛购买网站:FalseEyelashes.co.uk
2018/05/23 全球购物
技术比武方案
2014/05/19 职场文书
学风建设演讲稿
2014/09/12 职场文书
放假通知怎么写
2015/08/18 职场文书
MySQL数据库10秒内插入百万条数据的实现
2021/11/01 MySQL