当前位置: 首页 > news >正文

OpenCV 车牌检测

OpenCV 车牌检测

    • 级联分类器
    • 算法流程
    • 车牌检测
    • 相关链接

级联分类器

假设我们需要识别汽车图像中车牌的位置,利用深度学习目标检测技术可以采取基于锚框的模型,但这需要在大量图像上训练模型。
但是,级联分类器可以作为预训练文件直接使用,我们可以使用它来识别汽车图像中车牌的位置。级联分类器由多个级联的分类器组成,每个分类器都是一个弱分类器(如 Haar 特征分类器)。级联分类器通过级联地应用这些弱分类器来逐步筛选出目标对象。
在级联分类器中,每个级别都有一个分类器,根据特征判别规则对输入图像进行分类。如果一个图像区域被当前级别的分类器判定为非目标,则该区域将被丢弃,不再参与后续的分类器判断。只有当一个图像区域通过了所有级别的分类器判断,才会被认定为目标对象。
这些分类器类似于卷积核,但与深度神经网络需要学习的卷积核不同,级联分类器采用的卷积核列表是经过事先标识和筛选的,只有当多数卷积核都对目标进行了正确分类时,才会给出良好的分类得分。例如,一个面部级联分类器有多达 6,000 个核来处理面部区域,其中一些可能的核如下所示:

核示例
这些级联分类器也被称为 Haar 级联分类器。

算法流程

接下来,利用预训练的级联分类器识别汽车图像中车牌的位置,算法流程如下:

  1. 导入级联分类器
  2. 将图像转换为灰度图像
  3. 指定图像中感兴趣对象的最小和最大比例
  4. 获取来自级联分类器的区域提议
  5. 在区域提议周围绘制边界框

车牌检测

(1) 获取车牌识别级联分类器,在 GitHub 中下载 cascade.xml 作为级联分类器。

(2) 加载图像和级联分类器:

import cv2
from matplotlib import pyplot as pltplate_cascade = cv2.CascadeClassifier('cascade.xml')
image = cv2.imread("11.png", 1)

图像样本
(3) 将图像转换为灰度图像:

image_gray = cv2.cvtColor(image,cv2.COLOR_RGB2GRAY)

(4) 利用级联分类器检测车牌:

plates = plate_cascade.detectMultiScale(image_gray, 1.48, 2, minSize=(40, 40),maxSize=(1000, 100))

plate_cascade.detectMultiScale 返回级联卷积核具有高匹配度的所有可能矩形区域,用于确定图像中车牌的位置,我们还可以指定宽度、高度的最小和最大尺寸范围。

(5) 遍历车牌区域提议 (plates),获取稍大于区域提议的区域:

image2 = image.astype('uint8')
for (x, y, w, h) in plates:print(x,y,w,h)x -= w * 0.14w += w * 0.75y -= h * 0.15h += h * 0.3cv2.rectangle(image2, (int(x), int(y)), (int(x + w), int(y + h)), (0, 255, 0), 10)plt.imshow(cv2.cvtColor(image2, cv2.COLOR_BGR2RGB))
plt.show()

检测结果
从上图可以看出,预训练的级联分类器可以准确识别车牌的位置。与道路车道检测类似,在车牌检测中,我们也可能会遇到算法在一组图片上无法正常工作的情况。

相关链接

OpenCV简介与图像处理基础
人脸检测详解
使用PyTorch构建神经网络
R-CNN模型详解

http://www.lryc.cn/news/389188.html

相关文章:

  • 机器学习/pytorch笔记:time2vec
  • 降低开关电源噪声的设计总结
  • rust嵌入式开发2024
  • 字符串
  • mysql8 锁表与解锁
  • 第2篇 区块链的历史和发展:从比特币到以太坊
  • 从理论到实践的指南:企业如何建立有效的EHS管理体系?
  • 内网和外网的区别及应用
  • 电驱失效类型和风险分析,如何用精益思维提升电驱可靠性?
  • 自动扫描范围在减少剂量多相CT肝脏成像中的应用:基于CNN和高斯模型| 文献速递-深度学习自动化疾病检查
  • 【机器学习】基于层次的聚类方法:理论与实践
  • C# 验证PDF数字签名的有效性
  • 2小时动手学习扩散模型(pytorch版)【入门版】【代码讲解】
  • Centos7网络配置(设置固定ip)
  • 英伟达被“压制”的25年
  • windows安装Gitblit还是Bonobo Git Server
  • 仪器校准的概念与定义,计量校准是什么?
  • Vue3+Pinia
  • label studio数据标注平台的自动化标注使用
  • 高并发场景下的热点key问题探析与应对策略
  • 学习一下C++中的枚举的定义
  • 开发一套java语言的智能导诊需要什么技术?java+ springboot+ mysql+ IDEA互联网智能3D导诊系统源码
  • C++| STL之string
  • [数据集][目标检测]游泳者溺水检测数据集VOC+YOLO格式4599张2类别
  • JAVA实现麦克风说话同声传译
  • LabVIEW与PLC通讯方式及比较
  • 2024/6/30 英语每日一段
  • Postman接口测试工具的原理及应用详解(五)
  • 208.贪心算法:买卖股票的最佳时机||(力扣)
  • 【论文阅读】伸缩密度比估计:Telescoping Density-Ratio Estimation