车牌识别 opencv python(简单版)

这篇具有很好参考价值的文章主要介绍了车牌识别 opencv python(简单版)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

实验目标
使用形态学处理,识别图片中车牌的位置,并识别每个字符的位置
实验原理
1.车牌识别:
(1)车牌的背景色是蓝色,所以先提取图中蓝色的部分,转化为二值图像(蓝色部分为1,其余为0)。
(2)再检测边缘,标出边缘的外接矩形,根据此矩形的长宽比和面积,就可以筛选出车牌的位置所在的矩形。
2.字符识别:
(1)使用连通域检测可以获得所有连通域及其外接矩形。
(2)通过约束外接矩形的长宽比和面积,可以过滤掉噪声。
(3)数字一般在一个连通域内,但汉字往往分多个连通域,所以在连通域检测前,需要使用膨胀,将汉字的间隙填充。

import cv2
import numpy as np

# 主函数区
if __name__ == '__main__':
    num = 5
    img = cv2.imread(str(num) + '.png', 1)
    oriimg = img.copy()
    # 进行中值滤波去噪或高斯滤波
    # img = cv2.medianBlur(img, 9)
    img = cv2.GaussianBlur(img, (5, 5), 0)
    oriimg2 = img.copy()

    # RGB转HSV
    hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)

    # 蓝色的范围
    lower = np.array([100, 100, 100])
    upper = np.array([140, 255, 255])

    # 根据阈值构建掩模,只留下蓝色
    mask = cv2.inRange(hsv, lower, upper)

    cv2.imshow('mask', mask)  # 车牌的矩形
    # cv2.waitKey(0)

    # 检测轮廓
    contours, hierarchy = cv2.findContours(mask, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
    blocks = []
    for c in contours:
        x, y, w, h = cv2.boundingRect(c)  # 画出矩形

        # 根据轮廓形状特点,确定车牌的轮廓位置并截取图像
        if (w > (h * 2)) and (w < (h * 6)):
            # img=oriimg[y:y+h,x:x+w]
            # cv2.rectangle(oriimg, (x, y), (x+w, y+h), (0, 255, 0), 2)
            blocks.append([x, y, w, h, w * h])

    max_rec = max(blocks, key=lambda a: a[4])  # 找出面积最大的矩形

    # 画出车牌的矩形
    cv2.rectangle(oriimg, (max_rec[0], max_rec[1]), (max_rec[0] + max_rec[2], max_rec[1] + max_rec[3]), (255, 0, 255),
                  2)

    cv2.imshow('plate', oriimg)  # 车牌的矩形
    # cv2.waitKey(0)
    cv2.imwrite(str(num) + "plate.png", oriimg)


    """
    以上是车牌定位的代码,运行后会得到一个车牌的矩形框
    以下是车牌字符分割的代码,运行后会得到每个字符的矩形框
    """

    ROI = oriimg2[max_rec[1]:max_rec[1] + max_rec[3], max_rec[0]:max_rec[0] + max_rec[2], :]  # 截取车牌部分
    ROI_gray = cv2.cvtColor(ROI, cv2.COLOR_BGR2GRAY)

    ret, threshold = cv2.threshold(ROI_gray, 0, 255, cv2.THRESH_OTSU)  # 车牌部分二值化
    cv2.imshow('plate_bin', threshold)
    # cv2.waitKey(0)

    # 去掉最边缘的一部分
    margin_size = 10
    threshold[0:margin_size, :] = 0
    threshold[-margin_size:, :] = 0
    threshold[:, 0:margin_size] = 0
    threshold[:, -margin_size:] = 0

    # 膨胀,把汉字中孤立的部分连通起来
    kernel1 = np.ones((1, 3), dtype=np.uint8)  # 主要在横向方向膨胀
    dilate = cv2.dilate(threshold, kernel1, 1)
    kernel2 = np.ones((7, 1), dtype=np.uint8)  # 主要在纵向向方向膨胀
    dilate = cv2.dilate(dilate, kernel2, 1)
    erose=cv2.erode(dilate,kernel2,1) # 主要在横向方向腐蚀,防止数字连在一起

    cv2.imshow('dilate', erose)  # 膨胀后的车牌
    # cv2.waitKey(0)


    # 检测连通域
    num_labels, labels, stats, centroids = cv2.connectedComponentsWithStats(erose, connectivity=4)

    # 画出每个连通域的矩形框
    word_rect = []
    for r in stats:
        x, y, w, h, s = r.tolist()
        if w * 1.5 < h and w * 10 > h and h > threshold.shape[0] / 2:  # 约束长宽比和高度
            word_rect.append(r)
            cv2.rectangle(ROI, (x, y), (x + w, y + h), (255, 0, 255), 2)  # 画出每个字符的矩形框

    cv2.imshow('words', ROI)  # 框出车牌的每个字符
    cv2.waitKey(0)
    cv2.imwrite(str(num) + "words.png", ROI)

结果
车牌识别 opencv python(简单版)

车牌识别 opencv python(简单版)
此方法比较简单,具有局限性:
(1)如果遇到灰度图或者图片颜色不明显,就不能通过检测蓝色来识别车牌位置。
(2)如果图片质量很低,例如很模糊,则需要经过更多的预处理,例如去噪。否则连通域检测会出错。
(3)如果图片有扭曲,则过滤外接矩形的长宽比也要相应调整。
总体来说,仅仅使用形态学处理的车牌识别方法,对于质量好的图片是可以实现。但是实际中可能会遇到更复杂的情况,这时候往往需要深度学习的方法进行识别。文章来源地址https://www.toymoban.com/news/detail-459466.html

到了这里,关于车牌识别 opencv python(简单版)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • 基于Python_opencv的车牌识别系统

    基于Python_opencv的车牌识别系统

    一、说明 根据现有的车牌识别系统,本人对代码进行了优化,原有功能: 1、对图片中的车牌号进行识别,并对车牌所属地可视化 2、将识别出的车牌号、车牌所属地等信息导出Excel表格 3、根据QtDesinger设计GUI界面,将程序系统化 添加功能:调用摄像头实时识别捕捉到的车牌

    2023年04月15日
    浏览(10)
  • python+opencv+机器学习车牌识别 计算机竞赛

    python+opencv+机器学习车牌识别 计算机竞赛

    🔥 优质竞赛项目系列,今天要分享的是 🚩 基于机器学习的车牌识别系统 🥇学长这里给一个题目综合评分(每项满分5分) 难度系数:4分 工作量:4分 创新点:3分 该项目较为新颖,适合作为竞赛课题方向,学长非常推荐! 🧿 更多资料, 项目分享: https://gitee.com/dancheng-seni

    2024年02月07日
    浏览(17)
  • 深度学习毕业设计 python车牌识别系统 - opencv

    深度学习毕业设计 python车牌识别系统 - opencv

    # 1 前言 🚩 基于python 机器视觉 的车牌识别系统 🥇学长这里给一个题目综合评分(每项满分5分) 难度系数:3分 工作量:3分 创新点:2分 选题指导,项目分享: https://gitee.com/yaa-dc/warehouse-1/blob/master/python/README.md 车牌识别其实是个经典的机器视觉任务了,通过图像处理技术检测

    2024年02月05日
    浏览(14)
  • 毕业设计项目 python+opencv+机器学习车牌识别

    毕业设计项目 python+opencv+机器学习车牌识别

    🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。 为了大家能够顺利以及最少的精力通过毕设,学长分享优质毕业设计项目,今天

    2024年04月11日
    浏览(14)
  • 检测和识别车牌的python的简单示例代码

    然后用下面的代码: 先读取一张车牌图像,将其转换为灰度图像,用Canny算法进行边缘检测。然后,用OpenCV的findContours函数找到图像中的轮廓,根据车牌的宽高比和大小进行筛选,把符合条件的车牌图像截取出来。最后,使用Tesseract OCR引擎对截取出来的车牌图像进行识别,并

    2024年02月11日
    浏览(11)
  • 竞赛 python 机器视觉 车牌识别 - opencv 深度学习 机器学习

    竞赛 python 机器视觉 车牌识别 - opencv 深度学习 机器学习

    🔥 优质竞赛项目系列,今天要分享的是 🚩 基于python 机器视觉 的车牌识别系统 🥇学长这里给一个题目综合评分(每项满分5分) 难度系数:3分 工作量:3分 创新点:3分 🧿 更多资料, 项目分享: https://gitee.com/dancheng-senior/postgraduate 车牌识别其实是个经典的机器视觉任务了,

    2024年04月11日
    浏览(18)
  • 计算机视觉:使用opencv实现车牌识别

    计算机视觉:使用opencv实现车牌识别

    汽车车牌识别(License Plate Recognition)是一个日常生活中的普遍应用,特别是在智能交通系统中,汽车牌照识别发挥了巨大的作用。汽车牌照的自动识别技术是把处理图像的方法与计算机的软件技术相连接在一起,以准确识别出车牌牌照的字符为目的,将识别出的数据传送至交

    2024年02月04日
    浏览(17)
  • 挑战杯 python 机器视觉 车牌识别 - opencv 深度学习 机器学习

    挑战杯 python 机器视觉 车牌识别 - opencv 深度学习 机器学习

    🔥 优质竞赛项目系列,今天要分享的是 🚩 基于python 机器视觉 的车牌识别系统 🥇学长这里给一个题目综合评分(每项满分5分) 难度系数:3分 工作量:3分 创新点:3分 🧿 更多资料, 项目分享: https://gitee.com/dancheng-senior/postgraduate 车牌识别其实是个经典的机器视觉任务了,

    2024年02月21日
    浏览(22)
  • 竞赛保研 python 机器视觉 车牌识别 - opencv 深度学习 机器学习

    竞赛保研 python 机器视觉 车牌识别 - opencv 深度学习 机器学习

    🔥 优质竞赛项目系列,今天要分享的是 🚩 基于python 机器视觉 的车牌识别系统 🥇学长这里给一个题目综合评分(每项满分5分) 难度系数:3分 工作量:3分 创新点:3分 🧿 更多资料, 项目分享: https://gitee.com/dancheng-senior/postgraduate 车牌识别其实是个经典的机器视觉任务了,

    2024年02月04日
    浏览(16)
  • 【毕业设计】python 机器视觉 车牌识别 - opencv 深度学习 机器学习

    【毕业设计】python 机器视觉 车牌识别 - opencv 深度学习 机器学习

    🚩 基于python 机器视觉 的车牌识别系统 🥇学长这里给一个题目综合评分(每项满分5分) 难度系数:3分 工作量:3分 创新点:2分 🧿 选题指导, 项目分享: https://gitee.com/dancheng-senior/project-sharing-1/blob/master/%E6%AF%95%E8%AE%BE%E6%8C%87%E5%AF%BC/README.md 车牌识别其实是个经典的机器视觉任

    2024年02月06日
    浏览(13)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包