对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参数的含义。

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值