一、说明
这都是关于物体识别的。物体识别是指通过计算机视觉技术,自动识别图像或视频中的物体及其属性和特征,是人工智能领域的一个分支。物体识别可应用于多个领域,包括工业自动化、智能家居、医疗、安防等。请随时阅读这篇文章:类似哈尔的功能(维基百科))
二、项目完成过程
我们在这里所做的只是检测俄罗斯车牌和图像,然后使用haarcascade方法模糊它们。
2.1 步骤1: 导入库
import cv2
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline
2.2 步骤:导入要使用的图像
img = cv2.imread('DATA/car_plate_0.jpg')
2.3 步骤3:显示图像
接下来,我们希望您创建一个函数,以更大的比例显示图像并进行颜色校正。
def display(img):fig = plt.figure(figsize=(10,8))ax = fig.add_subplot(111)new_img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)ax.imshow(new_img)
测试一下:
display(img)
2.4 步骤4: 加载级联俄罗斯车牌号 XML 文件。
对于此步骤,您必须下载并粘贴到/DATA文件夹中的目录haarcascades。地址如下:opencv/data/haarcascades at master · opencv/opencv · GitHub
plate_cascade = cv2.CascadeClassifier('DATA/haarcascades/haarcascade_russian_plate_number.xml')
2.5 步骤5: 检测板的功能
接下来,我们要创建一个函数来接收图像并围绕它所获取的内容绘制一个矩形。
def detect_plate(img):plate_img = img.copy()plate_rects = plate_cascade.detectMultiScale(plate_img, scaleFactor=1.3, minNeighbors=3)for(x,y,w,h) in plate_rects:cv2.rectangle(plate_img, (x,y), (x+w, y+h), (0,0,255),3)return plate_img
测试一下:
result = detect_plate(img)
显示它:
display(result)
04步骤 # 检测板的功能
所以现在我知道车牌在哪里,我可以把它模糊出来。
所以我要做的方法是,我实际上要删除这个区域并将其设置为感兴趣的区域(RoI)。
然后我将模糊该区域,然后将其粘贴回原始图像中。
def detect_n_blur_plate(img):plate_img = img.copy()roi = img.copy()plate_rects = plate_cascade.detectMultiScale(plate_img, scaleFactor=1.3, minNeighbors=3)for(x,y,w,h) in plate_rects:roi = roi[y:y+h, x:x+w]blured_roi = cv2.medianBlur(roi, 7)plate_img[y:y+h, x:x+w] = blured_roireturn plate_img
测试一下:
result = detect_n_blur_plate(img)
显示它:
display(result)
这些是该项目的文件,在每个图像上运行该方法,请查看这篇有关如何操作文件的文章。 :)
from pathlib import Path
path = Path('DATA/')
files = path.iterdir()
for file in files:file_name = file.nameif file_name[:9]=='car_plate' and file_name[-3:] == 'jpg':print(file_name)car_plate_0.jpgcar_plate_1.jpgcar_plate_2.jpgcar_plate_3.jpgcar_plate_4.jpgcar_plate_5.jpgcar_plate_6.jpg
这就是大家!
print("That's it! Thank you once again!\nI hope will be helpful.")
That's it! Thank you once again!
I hope will be helpful.
以下是我们测试的图像:
Note:
The last image the algorithm was not able to detect.
The reasons may be several: The image may be at an angle difficult to detect, the numbering may not be Russian, the taillights do not give adequate space, who knows...
Try it yourself by manipulating the function parameters.
That is all!
Goodbye
三、小结
以上识别办法是在Harr模式识别办法,预先做好Harr模板然后调用,至于Harr原理,请看如下网页:Haar-like feature - Wikipedia