学校网站栏目建设,网站请人做的 域名自己注册的 知道网站后台 怎么挂自己的服务器,电脑可以做网站吗,顺德龙江网站建设OpenCV 车牌检测 级联分类器算法流程车牌检测相关链接 级联分类器
假设我们需要识别汽车图像中车牌的位置#xff0c;利用深度学习目标检测技术可以采取基于锚框的模型#xff0c;但这需要在大量图像上训练模型。 但是#xff0c;级联分类器可以作为预训练文件直接使用利用深度学习目标检测技术可以采取基于锚框的模型但这需要在大量图像上训练模型。 但是级联分类器可以作为预训练文件直接使用我们可以使用它来识别汽车图像中车牌的位置。级联分类器由多个级联的分类器组成每个分类器都是一个弱分类器(如 Haar 特征分类器)。级联分类器通过级联地应用这些弱分类器来逐步筛选出目标对象。 在级联分类器中每个级别都有一个分类器根据特征判别规则对输入图像进行分类。如果一个图像区域被当前级别的分类器判定为非目标则该区域将被丢弃不再参与后续的分类器判断。只有当一个图像区域通过了所有级别的分类器判断才会被认定为目标对象。 这些分类器类似于卷积核但与深度神经网络需要学习的卷积核不同级联分类器采用的卷积核列表是经过事先标识和筛选的只有当多数卷积核都对目标进行了正确分类时才会给出良好的分类得分。例如一个面部级联分类器有多达 6,000 个核来处理面部区域其中一些可能的核如下所示 这些级联分类器也被称为 Haar 级联分类器。
算法流程
接下来利用预训练的级联分类器识别汽车图像中车牌的位置算法流程如下
导入级联分类器将图像转换为灰度图像指定图像中感兴趣对象的最小和最大比例获取来自级联分类器的区域提议在区域提议周围绘制边界框
车牌检测
(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模型详解