美文网首页
人脸检测 二

人脸检测 二

作者: 圣_狒司机 | 来源:发表于2018-04-30 01:23 被阅读29次

    目的:

    1. 检测出用户路径下所有的图片的人像特征,保存在指定目录;
    2. 人像原始特征为100*100 图片;

    代码特点:

    用自制的filewalk函数遍历用户目录,并跟上了文件操作回调函数,使得代码阅读起来更一目了然。

    完整代码:

    import os
    import matplotlib.pyplot as plt
    import numpy as np
    from cv2 import cv2
    from skimage import color, draw, io, transform
    
    face_cascade=cv2.CascadeClassifier()
    face_cascade.load(r'C:\ProgramData\Anaconda3\Lib\site-packages\cv2\data\haarcascade_frontalface_default.xml')
    
    def feature_model(full_path_file,detected_path=r'C:\Users\super\Desktop\detected'):
        try:img = io.imread(full_path_file)
        except:return 0
        path,file = os.path.split(full_path_file)
        file_name,file_postfix = os.path.splitext(file)
        gray = np.array(color.rgb2gray(img)*256,dtype='uint8')
        faces=face_cascade.detectMultiScale(gray)
        for index,face in enumerate(faces):
            x,y,w,h = face
            face_detected = img[y:y+h,x:x+w,:]
            face_detected = transform.resize(face_detected,(100, 100),mode='reflect')
            full_path_detected_file = os.path.join(detected_path,file_name+'_%s%s'%(index,file_postfix))
            plt.imsave(full_path_detected_file,face_detected)
    
    def walk(path,callback=print):
        files = os.listdir(path)
        for file in files:
            try:
                if os.path.isdir(os.path.join(path,file)):
                    walk(os.path.join(path,file),callback)
                else:
                    print(os.path.join(path,file))
                    callback(os.path.join(path,file))
            except:pass
    
    def main():
        walk(path,feature_model)
    
    if __name__ == "__main__":
        path = r'C:\Users\super'
        main()
    

    可以改进之处:

    1. 没有指定人脸特征目录的话就自己创造一个目录,目前没有实现这个功能;
    2. 特殊权限的文件目录不能打开;
    3. 人脸识别的原始cv2检测器太垃圾,检测出许多非人脸特征,所以如果照片集里有很多非人像的图片就完全没法用啊!
    4. 非人像特征太多不能作为人脸识别原始数据,请继续筛选;
    5. 依图片集大小这个程序可能会运行两三个小时;
    6. 据说编码不能太完美主义,不然会没完没了~

    效果:

    效果

    相关文章

      网友评论

          本文标题:人脸检测 二

          本文链接:https://www.haomeiwen.com/subject/rgzalftx.html