项目练习用,方便把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站教程(推荐,已跑成功)
建议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行,人脸检测并框出后,设置保存图片的名称
代码截图如下:
运行结果如下: