OpenCV检测眼睛、猫脸、行人、车牌实战(附Python源码)

需要源码和资源请点赞关注收藏后评论区留言私信~~~

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()  # 释放所有窗体

 创作不易 觉得有帮助请点赞关注收藏~~~

  • 26
    点赞
  • 44
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 6
    评论
车牌识别系统是一种基于深度学习和opencv的应用程序,通过对车辆图片或视频中的车牌进行识别。下面是一个简单的车牌识别系统的源码实现: ```python import cv2 import numpy as np import tensorflow as tf # 加载预训练的深度学习模型 model = tf.keras.models.load_model('path/to/pretrained/model.h5') # 加载车牌检测器 plate_cascade = cv2.CascadeClassifier('path/to/haarcascade_plate.xml') # 车牌字符集 char_set = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'J', 'K', 'L', 'M', 'N', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'] # 读取车牌图片 image = cv2.imread('path/to/image.jpg') # 转为灰度图像 gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY) # 检测车牌 plates = plate_cascade.detectMultiScale(gray, 1.1, 4) # 遍历每个检测到的车牌 for (x, y, w, h) in plates: # 提取车牌图像 plate_image = image[y:y + h, x:x + w] # 调整尺寸为模型输入尺寸 resized_image = cv2.resize(plate_image, (80, 80)) # 转为灰度图像 grayscale_image = cv2.cvtColor(resized_image, cv2.COLOR_BGR2GRAY) # 归一化 normalized_image = grayscale_image / 255. # 添加批次维度 batched_image = np.expand_dims(normalized_image, axis=0) # 使用深度学习模型进行预测 predictions = model.predict(batched_image) # 解码预测结果 decoded_predictions = [char_set[np.argmax(p)] for p in predictions] # 输出车牌识别结果 license_plate = ''.join(decoded_predictions) print("识别结果:", license_plate) # 绘制车牌框 cv2.rectangle(image, (x, y), (x + w, y + h), (0, 255, 0), 2) # 标注车牌字符 cv2.putText(image, license_plate, (x, y), cv2.FONT_HERSHEY_SIMPLEX, 1, (0, 255, 0), 2) # 显示结果图像 cv2.imshow('License Plate Detection', image) cv2.waitKey(0) cv2.destroyAllWindows() ``` 以上是一个简单的车牌识别系统的源码示例,其中使用了训练好的深度学习模型对车牌进行识别,同时利用Haar特征的级联分类器对车牌进行检测。最终在图像上显示了检测到的车牌以及识别结果。请注意,这只是一个简单的示例,实际的车牌识别系统会更加复杂,需要根据具体需求进行进一步的优化和改进。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

showswoller

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值