python opencv 人脸识别

  • A+
所属分类:安全开发

版权声明:

本文首发于微信号:inn0team

此文章版权归属于 inn0team 所有,转载请保留此声明。

本机环境:

python 2.7

mac 系统

opencv 2.4.6

python版本一定要安装 2 的才行 ,版本 3 没有 cv2 

识别图片

原图

python opencv 人脸识别

识别后的图

python opencv 人脸识别

  1. #!/usr/bin/env python

  2. # encoding: UTF-8

  3. """

  4. Cteate time 2017-03-31

  5. author: 天才小三斤

  6. @mail: [email protected]

  7. @blog: http://www.fucksec.com

  8. """

  9. import cv2

  10. from PIL import Image, ImageDraw

  11. class Opencv(object):

  12.    # 初始化

  13.    def __init__(self):

  14.        # opencv 官方识别库地址 根据自己电脑路径更改

  15.        self.faces_xml = '/Users/sanjin/work/gittools/opencv/data/haarcascades/haarcascade_frontalface_default.xml'

  16.    # 人脸识别

  17.    def faces(self, img_path):

  18.        img = cv2.imread(img_path)

  19.        # 加载 官方的 识别数据

  20.        face_data = cv2.CascadeClassifier(self.faces_xml)

  21.        print img

  22.        # 判断图片维度 如果为3 证明不是灰度图 然后转化成灰度图

  23.        # 不是3 就是 2  那就是 灰度图

  24.        if img.ndim == 3:

  25.            # 转化 灰度

  26.            gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

  27.        else:

  28.            gray = img

  29.        # 1.2和5是特征的最小、最大检测窗口,它改变检测结果也会改变

  30.        faces = face_data.detectMultiScale(gray, 1.2, 5)

  31.        # 创建返回list

  32.        result = []

  33.        # 进行 for 循环 把 人脸坐标 和 宽高 插入到 list

  34.        for (x, y, width, height) in faces:

  35.            result.append((x, y, x + width, y + height))

  36.        return result

  37.    # 画出人脸

  38.    def h_faces(self, img_path, save_path):

  39.        faces = self.faces(img_path)

  40.        # 判断 人脸数据 是否存在

  41.        if faces:

  42.            # 打开图片

  43.            img = Image.open(img_path)

  44.            # 声明 Draw 方法 进行 画边框

  45.            draw_instance = ImageDraw.Draw(img)

  46.            # for 循环 根据 坐标 和 宽 高 画出人脸位置   outline 颜色值

  47.            for (x1, y1, x2, y2) in faces:

  48.                draw_instance.rectangle((x1, y1, x2, y2), outline=(255, 0, 0))

  49.            # 保存图片

  50.            img.save(save_path)

  51. if __name__ == '__main__':

  52.    # 图片地址 , 输出图片地址

  53.    Opencv().h_faces('/Users/sanjin/Desktop/1.jpg', '/Users/sanjin/Desktop/2.jpg')


inn0team  一个正在成长的安全团队
微信号:inn0team
python opencv 人脸识别
长按可关注我们


本文始发于微信公众号(inn0team):python opencv 人脸识别

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: