用opencv自带的haar模型提取数据集中的人脸图像

主要是自带的haar模型提取,代码很简单 

import cv2
import os

def crop():
    
    classfier = cv2.CascadeClassifier("E:/sign_system/opencv/haarcascades/haarcascade_frontalface_alt2.xml")            
    path = 'E:/faces'
    dirs = os.listdir(path)
    for file in dirs:
        label = file.strip('/')[-1]
        #print(label)
        new_path = 'E:/sign_system/haar_crop/'+str(label)
        print(new_path)
        if not os.path.exists(new_path):
            os.makedirs(new_path)        
        num = 0 
        file_name = path + '/' + label
        for pic in os.listdir(file_name):
            
            #print(pic)
            pic_name = file_name + '/' + pic 
            img = cv2.imread(pic_name)
            if img is  None:
                continue
            grey = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)           
            faceRects = classfier.detectMultiScale(grey, scaleFactor = 1.2, minNeighbors = 3, minSize = (32, 32))
            print(faceRects)
            
            if len(faceRects) > 0:          # 大于0则表示检测到人脸                                   
                for faceRect in faceRects:  # 单独框出每一张人脸
                    x, y, w, h = faceRect   # 获取识别信息的坐标信息       
                                               
                    # 将当前截取的人脸保存
                    img_name = '%s/%d.jpg'%(new_path, num)                
                    image = img[y - 10: y + h + 10, x - 10: x + w + 10]
                    cv2.imwrite(img_name, image)                                
                    num = num +1                            
 
if __name__ == '__main__':
    crop()

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值