python实现人脸检测

项目练习用,方便把windows的图片和解法转移到ubuntu上,目前只能想到发博客的方法……

题目


配置环境,利用python实现以下两张图的人脸检测,用边框将人脸框起来,了解人脸检测算法,保存实验结果,理解代码含义

ChatGPT3.5解答(未求证,但看着差不多)


你可以使用Python和OpenCV来实现人脸识别。以下是一个简单的示例代码,演示如何导入图片并进行人脸识别。你需要先安装opencv-python包,如果没有安装,可以使用以下命令进行安装:

pip install opencv-python

接下来,以下是示例代码:

import cv2

# 加载人脸检测的预训练分类器
face_cascade = cv2.CascadeClassifier(cv2.data.haarcascades + 'haarcascade_frontalface_default.xml')

# 读取图片
image = cv2.imread('path_to_your_image.jpg')
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)

# 检测人脸
faces = face_cascade.detectMultiScale(gray, scaleFactor=1.1, minNeighbors=5, minSize=(30, 30))

# 在检测到的人脸上画矩形框
for (x, y, w, h) in faces:
    cv2.rectangle(image, (x, y), (x + w, y + h), (255, 0, 0), 2)

# 显示结果
cv2.imshow('Detected Faces', image)
cv2.waitKey(0)
cv2.destroyAllWindows()

代码解释:

1.cv2.CascadeClassifier 用于加载预训练的人脸检测模型。
2.cv2.imread 用于读取图片。
3.cv2.cvtColor 将图片转换为灰度图,以便进行检测。
4.face_cascade.detectMultiScale 进行人脸检测。
5.cv2.rectangle 在检测到的人脸上绘制矩形框。
6.cv2.imshow 显示处理后的图片。

注意事项:

确保你将 'path_to_your_image.jpg' 替换为实际图片的路径。
确保图像文件的路径是正确的,且图像格式受支持(如 JPEG、PNG)。

这个代码示例是一个基础的例子,你可以根据需要进一步扩展功能,比如识别特定人脸、绘制额外的标记、处理视频流等。

Others(同门得到的解答,尚未求证)


B站教程(推荐,已跑成功)


链接:06检测多张人脸_哔哩哔哩_bilibili

建议0基础可以先去学习pycharm的基本操作方式,文章链接:新手入门:PyCharm 的使用-CSDN博客

以下是结合上述方法,以及本人实操中遇到的问题,整理出的大致操作步骤


(一)首先需要在pycharm安装opencv-python包,两种方法可用

(1)在pycharm(已汉化)的 主菜单 - 设置 - 项目 - python解释器 - 添加软件包 - 搜索opencv-python - 安装,如果没有换下载源,可能会比较慢,推荐先更换pip下载源,但是我在Ubuntu终端更换的时候失败了,目前还没找到永久换源的解决方法。

(2)也可以在pycharm的终端输入下面的代码,暂时更换下载源,下载很快,我是用这个方法下载的,具体可以参考文章:在pycharm中出现下载软件包失败的解决方法_pycharm无法下载beautifulsoup-CSDN博客

代码配置方法:

方法:pip install 文件名 -i https://pypi.mirrors.ustc.edu.cn/simple/ (可以更换下载源)

代码如下(中科大源):

pip install opencv-python -i https://pypi.mirrors.ustc.edu.cn/simple/ 

(二)安装好软件包后,先把需要检测的图片放在创建的工程文件下,如图,01.png和02.png,是本次需要进行人脸检测的两张图片:

(三)进行代码编写,如下:

#导入模块
import cv2 as cv
#定义人脸检测
def face_detect_demo():
    #将图片转换为灰度图片
    gray=cv.cvtColor(img,cv.COLOR_BGR2GRAY)
    #加载特征数据
    face_detect=cv.CascadeClassifier('/home/nq02/opencv/data/haarcascades/haarcascade_frontalface_default.xml')
    faces=face_detect.detectMultiScale(gray)
    for x,y,w,h in faces:
        cv.rectangle(img,(x,y),(x+w,y+h),color=(0,255,0),thickness=2)
    #显示图片
    cv.imshow('result',img)
#读取图片
img=cv.imread('01.png')
#调用人脸检测方法
face_detect_demo()
#保存图片
cv.imwrite('result_01.png',img)
#等待键盘输入 单位毫秒 传入0是无限等待
cv.waitKey(0)
#释放内存
cv.destroyAllWindows()

代码补充释义:

(1)第8行,加载特征数据,把绿色的资源地址换成自己haarcascade_frontalface_default.xml文件所在的地址。一般在opencv/data/haarcascades下,本次选用的是基础的检测面部的xml文件,还有针对其他部位的资源文件,图片来源如下:ubuntu下使用opencv和python实现实时视频流人脸识别_ubuntu下的opencv人脸识别-CSDN博客

(2)第15行,读取图片,在把图片放置在工程文件下后,可以直接输入图片的名称+属性即可,例如:01.png,jpg格式的图片也可以。

(3)第19行,人脸检测并框出后,设置保存图片的名称

代码截图如下:

运行结果如下:

  • 5
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值