百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术资源 > 正文

技术分享|AI人脸识别?有了这篇详细教程人人都能实现

off999 2024-10-20 08:08 40 浏览 0 评论

人脸识别是计算机视觉领域中的一项核心技术,对于整个人工智能技术的发展也是非常重要,目前已经在多个领域中投入使用,相对较为成熟。很多人认为人脸识别技术高深莫测,难以企及,其实也并非如此神秘,本文将通过OpenCV和Python/C++,利用简短的代码,帮助每一位读者实现人脸识别。

OpenCV:是一个主要针对实时计算机视觉的编程函数库。本文旨在使用OpenCV和Python/C++从图像中检测面部。

本文基础:在机器上安装Python和C++,了解Python和C ++的编码基础知识,代码编辑器。有了这些,我们就可以开始进行人脸识别了。

为了通过代码实现人脸识别,我们将使用OpenCV中基于Haar的cascade分类器,这一种有效的对象检测方法。它是一种基于机器学习的方法,其中cascade函数是通过许多positive和negative图像得到训练,然后用于检测其他图像中的对象。 OpenCV已经包含许多面部、眼睛、微笑等预先训练的分类器。这些XML模型文件存储在opencv / data / haarcascades /的位置。

让我们先开始在Python上编写代码实现人脸识别然后再展示通过C++实现的教程。

Python

首先,导入numpy、OpenCV两个库:

import numpy as np

import cv2 as cv

然后,加载OpenCV中自带的基于Haar的cascade分类器来实现人脸识别。haarcascade_frontalface_default.xml 是OpenCV中已经经过训练的人脸识别模型文件。

face_cascade = cv.CascadeClassifier('\\cv2\\data\\haarcascade_frontalface_default.xml')

eye_cascade = cv.CascadeClassifier('\\cv2\\data\\haarcascade_eye.xml')

现在,我们需要加载我们想要进行人脸检测的图像。对于本文,我们将使用如下OpenCV自带的'lenna'经典图像。

加载我们的图片,并将其转化为灰度图像:

img = cv.imread('lenna.jpg')

gray = cv.cvtColor(img, cv.COLOR_BGR2GRAY)

我们已经做好了人脸检测的准备工作,现在我们通过我们前面加载的cascade分类器的detectMultiScale函数来进行人脸检测:

faces = face_cascade.detectMultiScale(gray, 1.3, 5)

这里的1.3表示scaleFactor,5表示minNeighbours。

scaleFactor:在前后两次相继的扫描中,搜索窗口的比例系数。例如1.3指将搜索窗口依次扩大30%。

minNeighbors:构成检测目标的相邻矩形的最小个数。如果组成检测目标的小矩形的个数和小于minNeighbors都会被排除。

代码运行之后面部检测就完成了,并且在图像中找到的所有人脸数据都存储在faces这个数组中。然后,我们还可以在人脸周围绘制矩形:

for (x,y,w,h) in faces:

cv.rectangle(img,(x,y),(x+w,y+h),(255,0,0),2)

roi_gray = gray[y:y+h, x:x+w]

roi_color = img[y:y+h, x:x+w]

我们几乎已经完成了人脸识别,只需再将得到的带有人脸标记的图像显示出来即可。为此我们使用以下代码:

cv.imshow('Face_Detect',img)

cv.waitKey(0)

cv.destroyAllWindows()

下图就是我们得到的最终结果:

到此,我们已经学会了通过Python实现人脸识别,现在可以尝试在OpenCV库中使用不同的分类器来检测不同的对象。如果你有足够多的图片,甚至还可以制作自己的图片分类器! 接下来我们将展示如何通过C++来实现人脸识别。

C++

代码头文件:

#include "opencv2/objdetect.hpp"

#include "opencv2/highgui.hpp"

#include "opencv2/imgproc.hpp"

#include <iostream>

using namespace std;

using namespace cv;

objdetect.hpp:OpenCV中的对象检测模块。

highgui.hpp提供了简单的界面操作:

创建和操作可以显示图像的窗口

将轨迹栏添加到窗口

从磁盘或内存读取和写入映像。

从相机或文件中读取视频并将视频写入文件。

imgproc.hpp提供了许多处理图像的功能,如图像过滤和几何变换。

现在,我们编写一个函数,它接受输入图像和分类器作为参数,并在应用人脸识别算法后给出输出图像。

void detectAndDraw( Mat& img, CascadeClassifier& cascade, double scale)

这是我们的函数定义,我们继续编写函数体。首先,我们初始化一个矢量,用于存储我们的算法将检测到的所有人脸,并将我们的输入图像转换为灰度图像。

vector<Rect> faces;

Mat gray;

cvtColor( img, gray, COLOR_BGR2GRAY );

然后在我们的灰度图像上应用detectMultiScale函数。

cascade.detectMultiScale( gray, faces, 1.1, 2, 0|CASCADE_SCALE_IMAGE, Size(30, 30) );

这个函数类似于我们在Python中使用的函数。人脸检测现在已经完成,我们需要在检测到的人脸周围绘制矩形。

for ( size_t i = 0; i < faces.size(); i++ )

{

Rect r = faces[i];

Scalar color = Scalar(255, 0, 0);

rectangle( img, cvPoint(cvRound(r.x*scale), cvRound(r.y*scale)), cvPoint(cvRound((r.x +

r.width-1)*scale), cvRound((r.y + r.height-1)*scale)), color, 3, 8, 0);

}

现在我们只需将结果显示出来。

imshow( "Face Detection", img );

现在我们便可以简单地调用我们构建的人脸检测函数来实现人脸检测。

int main()

{

// Load the cascade classifier

cascade.load( "../../haarcascade_frontalcatface.xml" ) ;

double scale=1;

frame = imread('lenna.jpg', CV_LOAD_IMAGE_COLOR);

detectAndDraw( frame, cascade, scale );

return 0;

}

imread()用于加载输入图像。这里同样使用'lenna'图像。我们的C ++代码的结果:

以上就是我们通过Python/C++几行简单的代码实现人脸识别的所有内容,如果您有更好的建议或有任何问题,欢迎留言评论。

相关推荐

安全教育登录入口平台(安全教育登录入口平台官网)

122交通安全教育怎么登录:122交通网的注册方法是首先登录网址http://www.122.cn/,接着打开网页后,点击右上角的“个人登录”;其次进入邮箱注册,然后进入到注册页面,输入相关信息即可完...

大鱼吃小鱼经典版(大鱼吃小鱼经典版(经典版)官方版)

大鱼吃小鱼小鱼吃虾是于谦跟郭麒麟的《我的棒儿呢?》郭德纲说于思洋郭麒麟作诗的相声,最后郭麒麟做了一首,师傅躺在师母身上大鱼吃小鱼小鱼吃虾虾吃水水落石出师傅压师娘师娘压床床压地地动山摇。...

谷歌地球下载高清卫星地图(谷歌地球地图下载器)
  • 谷歌地球下载高清卫星地图(谷歌地球地图下载器)
  • 谷歌地球下载高清卫星地图(谷歌地球地图下载器)
  • 谷歌地球下载高清卫星地图(谷歌地球地图下载器)
  • 谷歌地球下载高清卫星地图(谷歌地球地图下载器)
哪个软件可以免费pdf转ppt(免费的pdf转ppt软件哪个好)
哪个软件可以免费pdf转ppt(免费的pdf转ppt软件哪个好)

要想将ppt免费转换为pdf的话,我们建议大家可以下一个那个wps,如果你是会员的话,可以注册为会员,这样的话,在wps里面的话,就可以免费将ppt呢转换为pdfpdf之后呢,我们就可以直接使用,不需要去直接不需要去另外保存,为什么格式转...

2026-02-04 09:03 off999

电信宽带测速官网入口(电信宽带测速官网入口app)

这个网站看看http://www.swok.cn/pcindex.jsp1.登录中国电信网上营业厅,宽带光纤,贴心服务,宽带测速2.下载第三方软件,如360等。进行在线测速进行宽带测速时,尽...

植物大战僵尸95版手机下载(植物大战僵尸95 版下载)

1可以在应用商店或者游戏平台上下载植物大战僵尸95版手机游戏。2下载教程:打开应用商店或者游戏平台,搜索“植物大战僵尸95版”,找到游戏后点击下载按钮,等待下载完成即可安装并开始游戏。3注意:确...

免费下载ppt成品的网站(ppt成品免费下载的网站有哪些)

1、Chuangkit(chuangkit.com)直达地址:chuangkit.com2、Woodo幻灯片(woodo.cn)直达链接:woodo.cn3、OfficePlus(officeplu...

2025世界杯赛程表(2025世界杯在哪个国家)

2022年卡塔尔世界杯赛程公布,全部比赛在卡塔尔境内8座球场举行,2022年,决赛阶段球队全部确定。揭幕战于当地时间11月20日19时进行,由东道主卡塔尔对阵厄瓜多尔,决赛于当地时间12月18日...

下载搜狐视频电视剧(搜狐电视剧下载安装)

搜狐视频APP下载好的视频想要导出到手机相册里方法如下1、打开手机搜狐视频软件,进入搜狐视频后我们点击右上角的“查找”,找到自已喜欢的视频。2、在“浏览器页面搜索”窗口中,输入要下载的视频的名称,然后...

pubg免费下载入口(pubg下载入口官方正版)
  • pubg免费下载入口(pubg下载入口官方正版)
  • pubg免费下载入口(pubg下载入口官方正版)
  • pubg免费下载入口(pubg下载入口官方正版)
  • pubg免费下载入口(pubg下载入口官方正版)
永久免费听歌网站(丫丫音乐网)

可以到《我爱音乐网》《好听音乐网》《一听音乐网》《YYMP3音乐网》还可以到《九天音乐网》永久免费听歌软件有酷狗音乐和天猫精灵,以前要跳舞经常要下载舞曲,我从QQ上找不到舞曲下载就从酷狗音乐上找,大多...

音乐格式转换mp3软件(音乐格式转换器免费版)

有两种方法:方法一在手机上操作:1、进入手机中的文件管理。2、在其中选择“音乐”,将显示出手机中的全部音乐。3、点击“全选”,选中所有音乐文件。4、点击屏幕右下方的省略号图标,在弹出菜单中选择“...

电子书txt下载(免费的最全的小说阅读器)

1.Z-library里面收录了近千万本电子书籍,需求量大。2.苦瓜书盘没有广告,不需要账号注册,使用起来非常简单,直接搜索预览下载即可。3.鸠摩搜书整体风格简洁清晰,书籍资源丰富。4.亚马逊图书书籍...

最好免费观看高清电影(播放免费的最好看的电影)

在目前的网上选择中,IMDb(互联网电影数据库)被认为是最全的电影网站之一。这个网站提供了各种类型的电影和电视节目的海量信息,包括剧情介绍、演员表、评价、评论等。其还提供了有关电影制作背后的详细信息,...

孤单枪手2简体中文版(孤单枪手2简体中文版官方下载)

要将《孤胆枪手2》游戏的征兵秘籍切换为中文,您可以按照以下步骤进行操作:首先,打开游戏设置选项,通常可以在游戏主菜单或游戏内部找到。然后,寻找语言选项或界面选项,点击进入。在语言选项中,选择中文作为游...

取消回复欢迎 发表评论: