对OpenCV人脸检测方法detectMultiScale参数“最直白”的理解——Python学习笔记(8)

最近学习图像处理,用到OpenCV的detectMultiScale方法检测人脸,但是对它的参数的含义不太理解,于是各种查资料和测试效果,下面把学习的过程和个人理解总结一下。

1、准备环境

我用的是python3.6 + PyCharm,并且安装了OpenCV及相关的库。

然后下载Haar级联的XML,放在代码工程目录下。

下载地址:https://download.csdn.net/download/leaf_zizi/12667450

再借用《浪姐》的一张人脸图片,像素300*200。

2、编写代码

import cv2

# 读取照片,转换成灰度图
img1 = cv2.imread("langjie.jpg")
gray_img = cv2.cvtColor(img1, cv2.COLOR_RGB2GRAY)

# 将级联算法加载到一个变量中
haar_face_cascade = cv2.CascadeClassifier(
    'haar\haarcascade_frontalface_alt.xml')

# 识别图像中的人脸,返回所有人脸的矩形框向量组
# scaleFactor 为了检测到不同大小的目标,通过scalefactor参数把图像长宽同时按照一定比例(默认1.1)逐步缩小,
# 然后检测,这个参数设置的越大,计算速度越快,但可能会错过了某个大小的人脸。
# minNeighbors 构成检测目标的相邻矩形的最小个数,默认值是3
faces = haar_face_cascade.detectMultiScale(gray_img, scaleFactor=1.1,
                                           minNeighbors=3)

# 在图像中画上矩形框
for (x, y, w, h) in faces:
    cv2.rectangle(img1, (x, y), (x + w, y + h), (0, 255, 0), 1)

# 显示结果
cv2.imshow("Final_detected_image", img1)
cv2.waitKey(0)

看一下识别的效果,发现有两个人脸没有识别到,作为一个“较真儿”的人,我需要研究一下detectMultiScale参数的含义。

  • 64
    点赞
  • 170
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
Python中使用OpenCV进行人脸检测方法可以按照以下步骤进行操作。首先,导入所需的库和模型。可以使用以下代码导入OpenCV库和人脸检测模型: import cv2 cascade = cv2.CascadeClassifier("path/to/haarcascade_frontalface_default.xml") 在代码中,将"path/to/haarcascade_frontalface_default.xml"替换为你自己安装的OpenCV人脸检测模型的路径。 接下来,读取视频流或图像并将其转换为灰度图像以方便处理。可以使用以下代码完成此步骤: video_capture = cv2.VideoCapture(0) # 如果要从网络摄像头读取视频流,将0更改为视频流的URL while True: ret, frame = video_capture.read() gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) 然后,使用模型进行人脸检测并标记出检测到的人脸。可以使用以下代码完成此步骤: faces = cascade.detectMultiScale(gray, scaleFactor=1.1, minNeighbors=5, minSize=(30, 30)) for (x, y, w, h) in faces: cv2.rectangle(frame, (x, y), (x+w, y+h), (0, 255, 0), 2) 最后,显示标记后的图像并等待用户按下"q"键退出程序。可以使用以下代码完成此步骤: cv2.imshow('Video', frame) if cv2.waitKey(1) & 0xFF == ord('q'): break 完成以上步骤后,释放视频捕获对象并销毁所有窗口。可以使用以下代码完成此步骤: video_capture.release() cv2.destroyAllWindows() 以上是使用PythonOpenCV进行人脸检测的基本步骤。可以根据需要进行调整和扩展,例如添加眼睛和嘴巴的检测功能,或使用Dlib库进行更高级的人脸相关任务。 <span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [python opencv人脸检测提取及保存方法](https://download.csdn.net/download/weixin_38552305/13769902)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [使用OpenCV实现人脸检测Python)](https://blog.csdn.net/weixin_42990464/article/details/120171635)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值