如何使用OpenCV Python检测车牌?
我们将使用Haar级联分类器来检测图像中的车牌号码。Haar级联分类器是一种有效的目标检测方法。它是一种基于机器学习的方法。
要训练车牌分类器,该算法最初需要大量正图像(带有车牌的图像)和负图像(没有车牌的图像)。分类器会从这些正的和负的图像中训练。然后用它来检测其他图像中的物体(车牌)。我们可以使用已经训练好的haar级联来进行目标检测。
如何下载Haarcascade?
您可以在以下GitHub网址找到不同的Haarcascade:
https://github.com/opencv/opencv/tree/master/data/haarcascades
要下载俄罗斯车牌haarcascade,请单击 haarcascade_russian_plate_number.xml 文件。打开它的原始格式,右键单击并保存。
步骤
要在图像中检测车牌,我们可以按以下步骤进行 –
- 导入所需库。在以下所有示例中,所需的Python库是 OpenCV 。请确保您已经安装了它。
-
使用 cv2.imread() 读取输入图像。指定完整的图像路径。将图片转换成灰度图像。
-
为车牌检测初始化Haarcascade分类器对象 plate_cascade = cv2.CascadeClassifier() 。通过haar级联xml文件的完整路径。您可以使用haar级联文件 haarcascade_russian_plate_number.xml 来检测图像中的车牌。
-
使用 plate_cascade.detectMultiScale() 在输入图像中检测车牌。它以 (x,y,w,h) 格式返回检测到的车牌的坐标。
-
使用 cv2.rectangle() 在原始图像中绘制检测到的车牌周围的边界矩形。
-
显示带有绘制了车牌周围边界的图像。
让我们查看一些示例以获得更清晰的理解。
示例
在这个Python程序中,我们使用 haarcascade 检测输入图像中的车牌号码。
我们将使用下面这张图像作为 输入文件 进行本程序的运行 −
输出
执行后,将会产生以下 输出 −
我们得到以下的 输出 窗口−