爬取图片后初次筛选人脸图片

用opencv对爬取的图片进行初次筛选,过滤掉无关图片,生成文本描述文件,并将筛选的图片单独保存出来到‘shaixuan’文件夹

第一次爬取的图片很乱,有人脸的,也有没有人脸的:
爬取图片后初次筛选人脸图片_第1张图片

import os
import cv2
import numpy as np

def detect(file):
    face_cascade = cv2.CascadeClassifier('C:\\Anaconda3\\pkgs\\libopencv-3.4.2-h20b85fd_0\\Library\\etc\\haarcascades\\haarcascade_frontalface_default.xml')
    
    
    path = 'renlian\\' + file
    img = cv2.imread(path)
    
     #有的时候虽然有图片,但是读入图片的时候会出现空值
     #得到的img的shape是()空的,就要筛选掉这样的图片
     #不然运行到某一张就会卡住
    size = np.shape(list(np.shape(img)))[0]
    if size == 0:
        return None
    else:
        
        gray=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
        faces=face_cascade.detectMultiScale(gray,1.3,5)
    #    print(faces)
        num = np.shape(faces)[0]
     
        return num
    
    

rootdir = 'renlian\\'
files = os.listdir(rootdir)
name = os.path.split(files[0])
with open(rootdir+'pos.txt','w+') as f:
    for file in files:
        name = os.path.split(file)
        print(file)
        img = cv2.imread('renlian\\' + str(file))
        n = detect(file)
        ##样本描述文件的书写
        if n:
            f.write("renlian\\"+str(name[1])+' '+ str(n) +'\n')
            #筛选之后的图片另存为
            cv2.imwrite('shaixuan\\'+str(file),img)
        else:
            f.write("renlian\\"+str(name[1])+' '+'0'+'\n')
        

筛选之后
爬取图片后初次筛选人脸图片_第2张图片
生成描述文件,后面数字表示识别到的人脸数目

爬取图片后初次筛选人脸图片_第3张图片
筛选后过滤了没有人脸的照片

你可能感兴趣的:(深度学习)