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

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

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

相关文章
|
25天前
|
测试技术 数据库 Python
Python装饰器实战:打造高效性能计时工具
在数据分析中,处理大规模数据时,分析代码性能至关重要。本文介绍如何使用Python装饰器实现性能计时工具,在不改变现有代码的基础上,方便快速地测试函数执行时间。该方法具有侵入性小、复用性强、灵活度高等优点,有助于快速发现性能瓶颈并优化代码。通过设置循环次数参数,可以更准确地评估函数的平均执行时间,提升开发效率。
99 61
Python装饰器实战:打造高效性能计时工具
|
21天前
|
运维 Shell 数据库
Python执行Shell命令并获取结果:深入解析与实战
通过以上内容,开发者可以在实际项目中灵活应用Python执行Shell命令,实现各种自动化任务,提高开发和运维效率。
50 20
|
21天前
|
XML 机器学习/深度学习 人工智能
使用 OpenCV 和 Python 轻松实现人脸检测
本文介绍如何使用OpenCV和Python实现人脸检测。首先,确保安装了OpenCV库并加载预训练的Haar特征模型。接着,通过读取图像或视频帧,将其转换为灰度图并使用`detectMultiScale`方法进行人脸检测。检测到的人脸用矩形框标出并显示。优化方法包括调整参数、多尺度检测及使用更先进模型。人脸检测是计算机视觉的基础技术,具有广泛应用前景。
53 10
|
2月前
|
数据采集 存储 XML
python实战——使用代理IP批量获取手机类电商数据
本文介绍了如何使用代理IP批量获取华为荣耀Magic7 Pro手机在电商网站的商品数据,包括名称、价格、销量和用户评价等。通过Python实现自动化采集,并存储到本地文件中。使用青果网络的代理IP服务,可以提高数据采集的安全性和效率,确保数据的多样性和准确性。文中详细描述了准备工作、API鉴权、代理授权及获取接口的过程,并提供了代码示例,帮助读者快速上手。手机数据来源为京东(item.jd.com),代理IP资源来自青果网络(qg.net)。
|
人工智能 文字识别 Java
如何用 Python 识别车牌?
如何用 Python 识别车牌?
473 0
如何用 Python 识别车牌?
|
2月前
|
人工智能 数据可视化 数据挖掘
探索Python编程:从基础到高级
在这篇文章中,我们将一起深入探索Python编程的世界。无论你是初学者还是有经验的程序员,都可以从中获得新的知识和技能。我们将从Python的基础语法开始,然后逐步过渡到更复杂的主题,如面向对象编程、异常处理和模块使用。最后,我们将通过一些实际的代码示例,来展示如何应用这些知识解决实际问题。让我们一起开启Python编程的旅程吧!
|
2月前
|
存储 数据采集 人工智能
Python编程入门:从零基础到实战应用
本文是一篇面向初学者的Python编程教程,旨在帮助读者从零开始学习Python编程语言。文章首先介绍了Python的基本概念和特点,然后通过一个简单的例子展示了如何编写Python代码。接下来,文章详细介绍了Python的数据类型、变量、运算符、控制结构、函数等基本语法知识。最后,文章通过一个实战项目——制作一个简单的计算器程序,帮助读者巩固所学知识并提高编程技能。
|
2月前
|
Unix Linux 程序员
[oeasy]python053_学编程为什么从hello_world_开始
视频介绍了“Hello World”程序的由来及其在编程中的重要性。从贝尔实验室诞生的Unix系统和C语言说起,讲述了“Hello World”作为经典示例的起源和流传过程。文章还探讨了C语言对其他编程语言的影响,以及它在系统编程中的地位。最后总结了“Hello World”、print、小括号和双引号等编程概念的来源。
125 80
|
16天前
|
存储 缓存 Java
Python高性能编程:五种核心优化技术的原理与Python代码
Python在高性能应用场景中常因执行速度不及C、C++等编译型语言而受质疑,但通过合理利用标准库的优化特性,如`__slots__`机制、列表推导式、`@lru_cache`装饰器和生成器等,可以显著提升代码效率。本文详细介绍了这些实用的性能优化技术,帮助开发者在不牺牲代码质量的前提下提高程序性能。实验数据表明,这些优化方法能在内存使用和计算效率方面带来显著改进,适用于大规模数据处理、递归计算等场景。
50 5
Python高性能编程:五种核心优化技术的原理与Python代码
|
2月前
|
Python
[oeasy]python055_python编程_容易出现的问题_函数名的重新赋值_print_int
本文介绍了Python编程中容易出现的问题,特别是函数名、类名和模块名的重新赋值。通过具体示例展示了将内建函数(如`print`、`int`、`max`)或模块名(如`os`)重新赋值为其他类型后,会导致原有功能失效。例如,将`print`赋值为整数后,无法再用其输出内容;将`int`赋值为整数后,无法再进行类型转换。重新赋值后,这些名称失去了原有的功能,可能导致程序错误。总结指出,已有的函数名、类名和模块名不适合覆盖赋新值,否则会失去原有功能。如果需要使用类似的变量名,建议采用其他命名方式以避免冲突。
48 14

热门文章

最新文章