需要源码和资源请点赞关注收藏后评论区留言私信~~~
OpenCV提供的级联分类器除了可以识别人脸之外,还可以识别其他一些具有明显特征的物体,如眼睛、行人等,下面介绍几个OpenCV自带的级联分类器的用法
一、眼睛检测
haarcascade_eye.xml是检测眼睛的级联分类器文件,加载该文件就可以追踪眼睛的分类器,下面通过一个实例来介绍如何实现这个功能
下面在图像的眼睛位置绘制红框,通过for循环实现
部分代码如下
import cv2 img = cv2.imread("peoples.png") # 读取人脸图像 # 加载识别眼睛的级联分类器 eyeCascade = cv2.CascadeClassifier("cascades\\haarcascade_eye.xml") eyes = eyeCade.detectMultiScale(img, 1.15) # 识别出所有眼睛 for (x, y, w, in eyes# 遍历所有眼睛的区域 cv2.recn(img, (x, y), (x + w, y + h), (0, 0, 255), 4) # 在图像中眼睛的位置绘制方框 cv2.imsho("g", img) # 显示最终处理的效果 cv2.waiey() 下任何键盘按键后 cv2.destroyllWindows() # 释放所有窗体
二、猫脸检测
opencv还提供了两个训练好的检测猫脸的级联分类器,分别是haarcascade_frontcatface.xml和haarcascade_frontcatface_extended.xml,前者的判断标准比较高,较为精确,但可能有些猫脸识别不出来,后者的判断标准比较低,只要类似猫脸就会被认为是猫脸,使用猫脸分类器不仅可以判断猫脸的位置,还可以识别图像中有几只猫
识别效果如下
部分代码如下
import cv2 img = cv2.imread(r"C:\Users\Administrator\Desktop\cat2.png") # 读取猫脸图像 # 加载识别猫脸的级联分类器 catFaceCascade = cv2.("cascades\\haarcascade_frontalcatface_extended.xml") catFace = catFaceCascade.detecMultiScale(img, 1.5, 4) # 识别出所有猫脸 for (x, y, w, h) catFce: # 历所有猫脸的区域 cv2.rectangle(img, (x, y), (x + w, y + h), (0, 0, 255), 5)# 在图像中猫脸的位置绘制方框 cv2.imshow("Where is your cat?", img) # 显示最终处理的效果 cv2.waitKey() 按下任何键按键后 cv2.destroyAllindows) # 释放所有窗体
三、行人检测
haarcascade_fullbody.xml是检测人体(正面直立全身或者背面直立全身)的级联分类器文件,加载该文件就可以追踪人体的分类器,下面通过一个实例介绍如何使用此功能
下面我们在一幅图像中找到行人的位置并用红框圈出
部分代码如下
import cv2 img = cv2.imread("monitoring.jpg") # 读取图像 # 加载识别类人体的级联分类器 bodyCascade = c.CascadeClassifier("cascades\\haarcascade_fullbody.xml") bodys = bodycade.detectMultiScale(img, 1.15, 4) # 识别出所有人体 for (x, y, h) in bodys: # 遍历所有人体区域 cv2(img, (x, y), (x + w, y + h), (0, 0, 255), 5)# 在图像中人体的位置绘制方框 cv2.imshow("img" img) # 显示最终处理的效果 cv2.waitKey() # 按下任何键盘按键后 cv2.destroyAllWindows() # 释放所有窗体
四、车牌检测
haarcascade_russian_plate_number.xml是检测汽车车牌的级联分类器文件,加载该文件就可以追踪图像中的车牌,下面通过一个实例来介绍如何实现此功能
部分代码如下
import cv2 img = cv2.imread("car.jpg") # 读取车的图像 # 加载识别车牌的级联分类器 plateCascade = cv2.CascaClassifier("cascades\\haarcascade_russian_plate_number.xml") plates = platede.detectMuale(img, 1.15, 4) # 识别出所有车牌 for (x, y, w, h) ilates: # 遍历所有车牌区域 cv2.rectangle(img, (x, y), (x + w, y + h), (0, 0, 255), 5) # 在图像中车牌的位置绘制方框 cv2.imow("img", img) # 显示最终处理的效果 cv2.waKe # 按下任何键盘按键后 cv2.destroyAllWindows() # 释放所有窗体
创作不易 觉得有帮助请点赞关注收藏~~~