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 import自定义模块方法
Feb 12 Python
在Python中使用poplib模块收取邮件的教程
Apr 29 Python
Python脚本实现自动将数据库备份到 Dropbox
Feb 06 Python
Python结巴中文分词工具使用过程中遇到的问题及解决方法
Apr 15 Python
PyQt5图形界面播放音乐的实例
Jun 17 Python
Python实用工具FuckIt.py介绍
Jul 02 Python
python通过链接抓取网站详解
Nov 20 Python
如何更改 pandas dataframe 中两列的位置
Dec 27 Python
Django models filter筛选条件详解
Mar 16 Python
解决django 向mysql中写入中文字符出错的问题
May 18 Python
Django def clean()函数对表单中的数据进行验证操作
Jul 09 Python
python super()函数的基本使用
Sep 10 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/10/23 PHP
PHP实现的限制IP投票程序IP来源分析
2016/05/04 PHP
php模式设计之观察者模式应用实例分析
2019/09/25 PHP
一段实现页面上的图片延时加载的js代码
2010/02/11 Javascript
javascript smipleChart 简单图标类
2011/01/12 Javascript
解决js正则匹配换行问题实现代码
2012/12/10 Javascript
用jquery统计子菜单的条数示例代码
2013/10/18 Javascript
全面解析Angular中$Apply()及$Digest()的区别
2016/08/04 Javascript
JS滚动到指定位置导航栏固定顶部
2017/07/03 Javascript
JS实现合并json对象的方法
2017/10/10 Javascript
JavaScript封装的常用工具类库bee.js用法详解【经典类库】
2018/09/03 Javascript
jQuery实现表格的增、删、改操作示例
2019/01/27 jQuery
详解Js里的for…in和for…of的用法
2019/03/28 Javascript
VUE渲染后端返回含有script标签的html字符串示例
2019/10/28 Javascript
Node.JS发送http请求批量检查文件中的网页地址、服务是否有效可用
2019/11/20 Javascript
Python中字典创建、遍历、添加等实用操作技巧合集
2015/06/02 Python
Python求两个文本文件以行为单位的交集、并集与差集的方法
2015/06/17 Python
详解Python中heapq模块的用法
2016/06/28 Python
python编写暴力破解zip文档程序的实例讲解
2018/04/24 Python
20行python代码的入门级小游戏的详解
2019/05/05 Python
Django命名URL和反向解析URL实现解析
2019/08/09 Python
使用pandas的box_plot去除异常值
2019/12/10 Python
浅谈Python线程的同步互斥与死锁
2020/03/22 Python
解决python虚拟环境切换无效的问题
2020/04/30 Python
canvas需要在标签里直接定义宽高
2014/12/17 HTML / CSS
爱他美官方海外旗舰店:Aptamil奶粉
2017/12/22 全球购物
销售部主管岗位职责
2013/12/18 职场文书
美术毕业生求职信
2014/02/25 职场文书
教师政风行风自查自纠报告
2014/10/21 职场文书
幸福家庭事迹材料
2014/12/20 职场文书
通报表扬范文
2015/01/17 职场文书
清明节主题班会
2015/08/14 职场文书
参观监狱警示教育心得体会
2016/01/15 职场文书
基于Redis过期事件实现订单超时取消
2021/05/08 Redis
Redis如何实现分布式锁
2021/08/23 Redis
在CSS中使用when/else的方法
2022/01/18 HTML / CSS