• 图像识别 python+opencv的简单人脸识别


    #
    源码如下:

    #!/usr/bin/env python
    #coding=utf-8
    import os
    from PIL import Image, ImageDraw
    import cv
    
    def detect_object(image):
        '''检测图片,获取人脸在图片中的坐标'''
        grayscale = cv.CreateImage((image.width, image.height), 8, 1)
        cv.CvtColor(image, grayscale, cv.CV_BGR2GRAY)
    
        cascade = cv.Load("/opt/local/share/OpenCV/haarcascades/haarcascade_frontalface_alt_tree.xml")
        rect = cv.HaarDetectObjects(grayscale, cascade, cv.CreateMemStorage(), 1.1, 2,
            cv.CV_HAAR_DO_CANNY_PRUNING, (20,20))
    
        result = []
        for r in rect:
            result.append((r[0][0], r[0][1], r[0][0]+r[0][2], r[0][1]+r[0][3]))
    
        return result
    
    def process(infile):
        '''在原图上框出头像并且截取每个头像到单独文件夹'''
        image = cv.LoadImage(infile);
        if image:
            faces = detect_object(image)
    
        im = Image.open(infile)
        path = os.path.abspath(infile)
        save_path = os.path.splitext(path)[0]+"_face"
        try:
            os.mkdir(save_path)
        except:
            pass
        if faces:
            draw = ImageDraw.Draw(im)
            count = 0
            for f in faces:
                count += 1
                draw.rectangle(f, outline=(255, 0, 0))
    
            drow_save_path = os.path.join(save_path,"out.jpg")
            im.save(drow_save_path, "JPEG", quality=80)
        else:
            print "Error: cannot detect faces on %s" % infile
    
    if __name__ == "__main__":
        process("/Users/zhangdebin/Documents/checkFace2.jpg")

    示例图片1:
    checkFace1.jpg
    识别结果
    可以看出,对于比较干净的人脸头像,使用opencv库haarcascade_frontalface_alt_tree.xml的识别精度很高(这张达到了100%),同时,对于表情变化的人脸也有很强的鲁棒性。
    示例图片2:
    checkFace2.jpg
    识别结果
    但是,对于上传的比较随意的头像照片,比如示例图片2这些有帽子、眼镜遮挡的人脸图片,识别效果就会很差,本组只有唯一一个没有帽子遮挡的人脸被识别成功

    本次只是简单的测试了下,python使用opencv库的人脸特征进行人脸识别的效果,仅供初学参考。

  • 相关阅读:
    【Day 04】 德州实行最严堕胎法,女性权益何去何从?
    【Day 03】 刚出生就遭遇疫情的娃娃们,将受到哪些影响?
    【Day 01】 房子不用买了,打印出来就能住:3D打印将如何改变居住生态?
    docker安装mysql-MacBook pro m1芯片
    jmeter调接口报415
    安装jenkins
    好用的编辑器总结
    屏障、释放一致性及原子操作
    Java的锁机制
    Java线程模型
  • 原文地址:https://www.cnblogs.com/zhangdebin/p/5567934.html
Copyright © 2020-2023  润新知