使用OpenCV清洗数据

本文介绍了一种使用OpenCV进行人脸检测的方法,以清理无人脸数据。通过加载预训练的Haar级联分类器,对图片进行灰度处理后检测人脸。当检测到人脸时,代码会在图片上画出矩形框,并保存处理后的图像。若需处理多张图片,可将代码放入循环中。调整detectMultiScale的参数可以改变检测的灵敏度。

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

        最近需要清洗大量无人脸数据,于是想到了使用OpenCV来进行清理,原理是:首先扫描全部图片数据再使用OpenCV的人脸检测框,如果有大于0的话说明有人脸就对该图片进行操作。

        原理说完开始上代码

首先导入包

import cv2
import numpy as np
import sys, os, glob, numpy
from skimage import io

再对照片进行处理

path = '*/图片地址'
# 指定图片的人脸识别然后存储
img = cv2.imread(path)
# 画框颜色
color = (0, 255, 0)
grey = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
classfier = cv2.CascadeClassifier(
    r'C:\ProgramData\Anaconda3\envs\pytorch2\Lib\site-packages\cv2\data\haarcascade_frontalface_alt2.xml')
# scaleFactor表示每次图像尺寸减小的比例,minNeighbors表示每一个目标至少要被检测到9次才算是真的目标,
# minSize为目标的最小尺寸,minSize为目标的最大尺寸
faceRects = classfier.detectMultiScale(grey, scaleFactor=1.02, minNeighbors=9, minSize=(71, 71), maxSize=(800, 800))
if len(faceRects) > 0:  # 大于0则检测到人脸
    for faceRect in faceRects:  # 单独框出每一张人脸
        x, y, w, h = faceRect
        cv2.rectangle(img, (x - 10, y - 10), (x + w + 10, y + h + 10), color, 2)  # 2控制绿色框的粗细

    # 写入图像
    cv2.imwrite('image', img)
    #展示图片效果
    cv2.imshow("image", img)
    cv2.waitKey(0)

代码中的XML文件是需要填写自己电脑中的路径的

我们可以根据自己的需求对detectMultiScale的参数进行修改

scaleFactor表示每次图像尺寸减小的比例
minNeighbors表示每一个目标至少要被检测到n次才算是真的目标,例如文中的检测9次
minSize为目标的最小尺寸
maxSize为目标的最大尺寸

文中代码是检测一张图片的,如果需要检测多张的话可以写一个循环

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

dear_8520

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值