python到底有多强大?只需15行代码即可进行人脸检测(代码片段)

梦子mengy7762 梦子mengy7762     2023-02-17     490

关键词:

无论你是最近开始探索OpenCV还是已经使用它很长一段时间,在任何一种情况下,您都一定遇到过“人脸检测”这个词。随着机器变得越来越智能,它们模仿人类行为的能力似乎也在增加,而人脸检测就是人工智能的进步之一。

私信小编01即可获取大量python学习资源

所以今天,我们将快速了解一下面部检测是什么,为什么它很有用,以及如何禁用 15 行代码就可以在您的系统上实现面部检测!

让我们从了解面部检测开始。

什么是人脸检测?

人脸检测是一种基于人工智能的计算机技术,能够识别和定位数码照片和视频中人脸的存在。简而言之,机器检测图像或视频中人脸的能力。

由于人工智能的重大进步,现在可以检测图像或视频中的人脸,无论光照条件、肤色、头部姿势和背景如何。

人脸检测是几个人脸相关应用程序的起点,例如人脸识别或人脸验证。如今,大多数数码设备中的摄像头都利用人脸检测技术来检测人脸所在的位置并相应地调整焦距。

那么人脸检测是如何工作的呢?

很高兴你问了!任何人脸检测应用程序的主干都是一种算法(机器遵循的简单分步指南),可帮助确定图像是正图像(有脸的图像)还是负图像(没有人脸的图像)。

为了准确地做到这一点,算法在包含数十万张人脸图像和非人脸图像的海量数据集上进行了训练。这种经过训练的机器学习算法可以检测图像中是否有人脸,如果检测到人脸,还会放置一个边界框。

使用 OpenCV 进行人脸检测

计算机视觉是人工智能中最令人兴奋和最具挑战性的任务之一,有几个软件包可用于解决与计算机视觉相关的问题。OpenCV 是迄今为止最流行的用于解决基于计算机视觉的问题的开源库。

OpenCV 库的下载量超过1800 万次,活跃的用户社区拥有 47000 名成员。它拥有 2500 种优化算法,包括一整套经典和最先进的计算机视觉和机器学习算法,使其成为机器学习领域最重要的库之一。

图像中的人脸检测是一个简单的 3 步过程:

第一步:安装并导入open-cv模块:

pip install opencv-python
import cv2import matplotlib.pyplot as plt 
# 用于绘制图像

第 2 步:将 XML 文件加载到系统中

下载 Haar-cascade Classifier XML 文件并将其加载到系统中:

Haar-cascade Classifier 是一种机器学习算法,我们用大量图像训练级联函数。根据不同的目标对象有不同类型的级联分类器,这里我们将使用考虑人脸的分类器将其识别为目标对象。

您可以点击此处找到用于人脸检测的经过训练的分类器 XML 文件

https://github.com/wanghao221/Face-Detection/blob/main/haarcascade_frontalface_default.xml

# 加载级联face_cascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')

第 3 步:检测人脸并在其周围绘制边界框

使用Haar-cascade 分类器中的detectMultiScale()函数检测人脸并在其周围绘制边界框:

# 读取输入图像img = cv2.imread('test.png')
# 检测人脸faces = face_cascade.detectMultiScale(image = img, 
scaleFactor = 1.1, minNeighbors = 5)
# 在人脸周围绘制边界框for (x, y, w, h) in faces:     
 cv2.rectangle(img, (x, y), (x+w, y+h), (255, 0, 0), 2)
# 显示图像中检测到的人脸数量
print(len(faces),"faces detected!")
# 绘制检测到人脸的图像finalimg = cv2.cvtColor(img, cv2.COLOR_RGB2BGR)
plt.figure(figsize=(12,12))
plt.imshow(finalimg) plt.axis("off")plt.show()

detectMultiScale() 参数:

image: CV_8U 类型的矩阵,其中包含检测到对象的图像。

scaleFactor:指定在每个图像比例下图像尺寸减小多少的参数。

minNeighbors:参数指定每个候选矩形应该保留多少邻居。

可能需要调整一下这些值来获取最佳结果。

就像这样,你可以实现计算机视觉最独特的应用程序之一。可以在下面的GitHub找到整个人脸检测实现的详细代码模板。

只需15行代码即可进行人脸检测!(使用python和opencv)(代码片段)

🌊作者主页:海拥🌊作者简介:🏆CSDN全栈领域优质创作者、🥇HDZ核心组成员、🥈蝉联C站周榜前十🌊粉丝福利:粉丝群每周送四本书,每月送各种小礼品(搪瓷杯、抱枕、鼠标垫、马克杯... 查看详情

l1-017到底有多二(15分)(代码片段)

L1-017到底有多二(15分)一个整数“犯二的程度”定义为该数字中包含(2)的个数与其位数的比值。如果这个数是负数,则程度增加(0.5)倍;如果还是个偶数,则再增加(1)倍。例如数字(-13142223336)是个(11)位数,其中有(3)个(2),并且是负... 查看详情

“我,月薪4500,副业收入2w”:用python做副业,到底有多赚钱?(代码片段)

现在在年轻人打工的第一目标是什么?就是:搞钱!搞钱!搞钱!但赚钱谈何容易,很多人工作只有一点“死”工资,每月再扣除房租水电、花呗信用卡的钱,能用的钱真的不多了,更别提去提... 查看详情

王者荣耀为例探讨之搜索指数对it行业的运营作用到底有多大?(代码片段)

王者荣耀为例探讨之搜索指数对IT行业的运营作用到底有多大?这两年,一个很有名的游戏大家应该都听说过了,那就是腾讯的王者荣耀,这个游戏听说非常火爆,但是我没有玩过,身边有很多人都玩过,据说非常强大,那么今... 查看详情

python语言到底都有哪些优点呢?

“胶水语言”?  多年来,Python在各种流行编程语言中一直排名靠前,它自身的特点让Python成为世界上功能最丰富的编程语言之一,可以适用于任何项目开发,因此Python深受开发工程师的喜爱。那到底Python自身有哪些优点使得... 查看详情

到底c语言的指针有多强大?

...就等于没学C语言可见他的重要性,所以楼主先不要去管到底有多强大,等你学通了你自己就领悟了! 参考技术B指针说白了就是一个带数据类型的变量,而它存储的是一个地址。在汇编语言中变量基本上都是用变量名来代表一个... 查看详情

只需一行python代码即可玩20几款小游戏(代码片段)

...分享一个有趣的github项目:https://github.com/kingser/free-python-games,通过该项目,我们只需一行代码即可玩20几款小游戏,下面具体来看一下。安装首先,我们进行安装,安装很简单,只需一行命令即可࿱... 查看详情

wtf!只需一行python代码即可玩20几款小游戏(代码片段)

...分享一个有趣的github项目:https://github.com/kingser/free-python-games,通过该项目,我们只需一行代码即可玩20几款小游戏,下面具体来看一下。安装首先,我们进行安装,安装很简单,只需一行命令即可࿱... 查看详情

题解pta团体程序设计天梯赛l1-017到底有多二(15分)go语言|golang(代码片段)

L1-017到底有多二(15分)Go语言|Golang一个整数“犯二的程度”定义为该数字中包含2的个数与其位数的比值。如果这个数是负数,则程度增加0.5倍;如果还是个偶数,则再增加1倍。例如数字-13142223336是个11位数,其中... 查看详情

l1-017到底有多二(15分)天梯赛(代码片段)

L1-017到底有多二(15分)一个整数“犯二的程度”定义为该数字中包含2的个数与其位数的比值。如果这个数是负数,则程度增加0.5倍;如果还是个偶数,则再增加1倍。例如数字-13142223336是个11位数,其中有3个2,... 查看详情

Python 到底有多随机?

】Python到底有多随机?【英文标题】:JusthowrandomisitpossibleforPythontobe?【发布时间】:2017-05-1716:51:45【问题描述】:如果您从一个包含数百甚至数千个单独项目的列表开始,并且您希望Python(一次)随机选择一个(用于创建密文)... 查看详情

python爬虫:想听榜单歌曲?只需要14行代码即可搞定

...指令如下:其中文开发文档:BeautifulSoup库是一个强大的Python语言的XML和HTML解析库。它提供了一些简单的函数来处理导航、搜索、修改分析树等功能。BeautifulSoup库还能自动将输入的文档转换为Unicode编码,输出文档转换为UTF-8编码... 查看详情

王者荣耀为例探讨之搜索指数对it行业的运营作用到底有多大?

王者荣耀为例探讨之搜索指数对IT行业的运营作用到底有多大?这两年,一个很有名的游戏大家应该都听说过了,那就是腾讯的王者荣耀,这个游戏听说非常火爆,但是我没有玩过,身边有很多人都玩过,据说非常强大,那么今... 查看详情

clickhouse到底有多快?200亿行数据count,group的响应时间

200亿行: count 6.61ssimplegroup37.45scomplexgroup398.55s 查看详情

“12306”的架构到底有多牛逼?(代码片段)

虽然现在大多数情况下都能订到票,但是放票瞬间即无票的场景,相信大家都深有体会。尤其是春节期间,大家不仅使用12306,还会考虑“智行”和其他的抢票软件,全国上下几亿人在这段时间都在抢票。“123... 查看详情

三星集团对于韩国到底有多重要?(代码片段)

三星对韩国的重要性主要是体现在覆盖面极广、体量极大等。就覆盖面看,韩国人自出生后就避不开三样东西:死亡、税收和三星!甚至还有人认为,三星就是韩国的“第二政府”。这点从此前朴槿惠的政治丑闻中,三星被接连... 查看详情

java示例代码_对文件中的降序内容进行排序,只需5行

java示例代码_对文件中的降序内容进行排序,只需5行 查看详情

pythondns转储程序:转储域分隔文件的名称服务器。只需传递包含行分隔域的文件即可。(代码片段)

查看详情