美文网首页
人脸检测 二

人脸检测 二

作者: 圣_狒司机 | 来源:发表于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. 据说编码不能太完美主义,不然会没完没了~

效果:

效果

相关文章

  • opencv之人脸检测项目实战(二)

    自我介绍 目录 一、人脸检测整体架构1.1 什么是人脸检测?1.2 人脸检测的应用场景1.3 人脸检测核心架构二、...

  • 人脸识别

    图片人脸检测——OpenCV版(二) 图片人脸检测——Dlib版(四) 人脸识别之人脸对齐(一)--定义及作用

  • 号称“超越OpenCV,史上最快C++人脸检测系统”

    libfacedetection用于图像中人脸检测和人脸标志检测的快速二进制库,其人脸检测速度可达1500FPS,...

  • 人脸检测 二

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

  • MTCNN

      人脸任务总体上分为:人脸检测、人脸关键点检测、人脸判别、人脸识别、人脸聚类等。  作者认为人脸检测和人脸关键点...

  • 安卓OpenCV开发(二)人脸检测

    重点是人脸检测,检测,检测。 就是把人脸检测出来,不是识别,不是识别,不是识别。识别的意思,就是检测到人脸,并且通...

  • 人脸活体检测

    人脸检测 关键点检测 人脸对齐(仿射变换) 活体检测/身份识别

  • iOS ---人脸检测

    检测图像中的人脸 Core Image可以分析并找到图像中的人脸。它执行的是人脸检测,而不是识别。人脸检测是识别包...

  • Android之基于Facenet模型比对视频中的人脸

    前言 继续前面 MTCNN移植安卓并检测视频中人脸 ,已经检测到人脸,那么需要对所检测的人脸和本地的人脸数据做比对...

  • 较为成熟的安卓项目--人面识别,手势识别向

    一、 人脸识别 1. 目标检测&目标追踪&人脸检测&人脸识别 GitHub:https://github.com/...

网友评论

      本文标题:人脸检测 二

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