python-opencv-人脸识别实现 从图片中扣人脸

本文介绍了如何利用OpenCV库在Python项目中进行人脸识别,重点讲解了detecMultiScale()函数的参数以及OpenCV自带的人脸检测模型,如haarcascade_frontalface_default.xml。通过这个功能,可以从图片中高效地提取人脸,用于机器学习的人工标注样本。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 最近项目需要,从百度,bing 爬取图片,并对图片中人脸进行扣取,然后扣取的人脸作为机器学习的样本数据进行人工标注,图片爬取了人工筛选比较耗时,于是查找资料发现opencv库中人脸识别可以实现该需求,识别率还可以。

#-*-coding:utf8-*-
import os
import cv2
import time
import shutil

def getAllPath(dirpath, *suffix):
    PathArray = []
    for r, ds, fs in os.walk(dirpath):
        for fn in fs:
            if os.path.splitext(fn)[1] in suffix:
                fname = os.path.join(r, fn)
                PathArray.append(fname)
    return PathArray

#从源路径中读取所有图片放入一个list,然后逐一进行检查,把其中的脸扣下来,存储到目标路径中
def readPicSaveFace(sourcePath,targetPath,invalidPath,*suffix):
    try:
        ImagePaths=getAllPath(sourcePath, *suffix)

        #对list中图片逐一进行检查,找出其中的人脸然后写到目标文件夹下
        count = 1
        # haarcascade_frontalface_alt.xml为库训练好的分类器文件,下载opencv,安装目录中可找到
        face_cascade = cv2.CascadeClassifier('C:\Users\lizhiliang\Downloads\opencv\sources\data\haarcascades\haarcascade_frontalface_alt.xml')
        for imagePath in ImagePaths:
            img = cv2.imread(imagePath)
            if type(img) != str:
                faces = face_cascade.detectMultiScale(img, 1.1, 5)
                if len(faces):
                    for (x, y, w, h) in faces:
                        # 设置人脸宽度大于128像素,去除较小的人脸
                        if w>=128 and h>=128:
                            # 以时间戳和读取的排序作为文件名称
                            listStr = [str(int(time.time())), str(count)]
                            fileName = ''.join(list
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值