这是关于人脸的又一篇原创!

之前有利用C++和OpenCv写过人脸识别的系列文章,对于人脸识别的基本理解和步骤流程等基本知识不做反复叙述。比詹小白还要白的童鞋可以查看往期文章进行了解噢

一、人脸检测

python版人脸检测基本上可以参照C++版本的程序,根据语法不同进行改写即可。

1.输入为包含人脸的图片时

这种情况较为简单,只是直接使用了opencv库的训练好的人脸检测模型~其代码如下所示:(具体函数和方法和c++情况下一样,不反复叙述)

1#encoding=utf-8

2import cv2

3import numpy

4face_patterns = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')  #加载分类器,在opencv库内

5sample_image = cv2.imread('image4.jpg')  #这里是当输入为图片而不是摄像头采集时

6faces = face_patterns.detectMultiScale(sample_image,scaleFactor=1.1,minNeighbors=5,minSize=(80, 80))

7for (x, y, w, h) in faces:

8    cv2.rectangle(sample_image, (x, y), (x+w, y+h), (0, 255, 0), 2)

9cv2.imshow('face', sample_image);

10cv2.waitKey(0)

11cv2.destroyAllWindows()

程序将图像中的人脸检测出来并框出来。运行结果如下所示:

2.输入为摄像头实时采集的图像时

这种情况和第一种情况大体类似,唯一的不同在于输入图像输入不来源于静止图片,而是摄像头的实时采集图像。测试效果不进行展示了(怕帅到你们)

1#encoding=utf-8

2import cv2

3import numpy

4face_patterns = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')  #加载分类器,在opencv库内

5camera = cv2.VideoCapture(0) #这里是利用摄像头采集,打开摄像头操作

6while camera.isOpened:

7    #利用read方法读取摄像头的某一帧图片

8    (ok, sample_image) = camera.read()

9    if not ok:

10        break

11    faces = face_patterns.detectMultiScale(sample_image,scaleFactor=1.1,minNeighbors=5,minSize=(80, 80))

12    for (x, y, w, h) in faces:

13        cv2.rectangle(sample_image, (x, y), (x+w, y+h), (0, 255, 0), 2)

14    cv2.imshow('face', sample_image);

15    if cv2.waitKey(10)&0xFF==ord('q'):#按下q,退出循环

16        break

17camera.release()

18#cv2.waitKey(0)

19cv2.destroyAllWindows()

二、人脸识别

人脸识别也可以和检测一样参照c++版本的程序,但是学python时候接触到一个很牛*的模块,这里做图片集的人脸识别进行介绍。

首先,这是所谓的niubi模块是face_recognition库模块,该库使用 dlib 顶尖的深度学习人脸识别技术构建,在户外脸部检测数据库基准(Labeled Faces in the Wild benchmark)上的准确率高达 99.38%。

1.模块的安装

face_recognition 的安装真的很拼人品!!linux系统一装就好,windows系统折腾来捯饬去炒鸡费劲!!还好我是python3.6版本,按照网上的一些教程也算是安装好了,(cmake、dlib啥的很难受)。

简单的说,用pip install指令进行安装还是比较容易的。一条指令即可,如果在安装dlib时出错那就可怜你得捯饬一会了~~

pip install face_recognition

2.代码实现

重点有三个,主要如下:

face_recognition.load_image_file

加载训练的对象,这里仅仅是三个类,各类一张图片

face_recognition.face_encodings

对加载好的对象,利用face_recognition中的方法进行特征识别,用于后面分类

face_recognition.compare_faces

将待分类识别的图像按照相同方法进行特征识别,并将其特征与指定对象特征对比,进行判断

以乔布斯、奥巴马和无名为例~

代码如下:

1# -*- coding: utf-8 -*-

2import cv2

3import face_recognition

4jobs_image = face_recognition.load_image_file("jobs.jpg");#乔布斯

5obama_image = face_recognition.load_image_file("obama.jpg");#奥巴马

6unknown_image = face_recognition.load_image_file("unknown.jpg");#无名人士

7jobs_encoding = face_recognition.face_encodings(jobs_image)[0]

8obama_encoding = face_recognition.face_encodings(obama_image)[0]

9unknown_encoding = face_recognition.face_encodings(unknown_image)[0]

10#重点是:compare_face

11results = face_recognition.compare_faces([jobs_encoding, obama_encoding], unknown_encoding )

12labels = ['jobs', 'obama']

13print('results:'+str(results))

14for i in range(0, len(results)):

15    if results[i] == True:

16        print('The person is:'+labels[i])

代码通俗易懂(python的一大特点~),其运行结果是以文本形式指出识别对象。结果如下:

1>>>results:[False, True]

2>>>The person is:obama

python人脸照片分类_Python系列之三——人脸检测、人脸识别相关推荐

  1. python人脸照片分类_Python OpenCV 人脸识别(一)

    前面介绍了Numpy模块,下面再介绍一个OpenCV模块,就基于这两个库看一下当下很火的人工智能是如何实现的,我们介绍几个:人脸识别(当下非常火的).音视频操作等等.今天先介绍一下静态图片的人脸识别, ...

  2. python人脸识别截图_Python OpenCV调用摄像头检测人脸并截图

    本文实例为大家分享了Python OpenCV调用摄像头检测人脸并截图的具体代码,供大家参考,具体内容如下 注意:需要在python中安装OpenCV库,同时需要下载OpenCV人脸识别模型haarc ...

  3. python决策树 多分类_Python中的决策树分类:您需要了解的一切

    python决策树 多分类 什么是决策树? (What is Decision Tree?) A decision tree is a decision support tool that uses ...

  4. 防“活化”照片蒙混过关,数据宝“活体检测+人脸识别”让刷脸更安全

    随着人脸识别技术日益成熟,商业化应用越来越广泛,人脸登录.人脸支付.人脸乘梯.人脸闸机等等,在安防.金融.教育.医疗等领域广泛应用,人脸识别技术的智能快捷在国内得到迅速发展. 但人脸识别容易被照片.视 ...

  5. python 装饰器分类_Python 装饰器(Decorators) 超详细分类实例

    Python装饰器分类 Python 装饰器函数: 是指装饰器本身是函数风格的实现; 函数装饰器: 是指被装饰的目标对象是函数;(目标对象); 装饰器类 : 是指装饰器本身是类风格的实现; 类装饰器 ...

  6. python中文件分类_python实现根据文件格式分类

    本文实例为大家分享了python根据文件格式分类的具体代码,供大家参考,具体内容如下 使用到python内置os模块(对目录或文件的新建/删除/属性查看,还提供了对文件以及目录的路径操作).shuti ...

  7. python 获取照片拍摄时间_Python实现获取照片拍摄日期并重命名的方法

    本文实例讲述了Python实现获取照片拍摄日期并重命名的方法.分享给大家供大家参考,具体如下: python获取照片的拍摄日期并重命名.不支持重复处理的中断. 重命名为:拍摄日期__原文件名 impo ...

  8. python中dlib库_python 基于dlib库的人脸检测的实现

    本周暂时比较清闲,可以保持每日一更的速度. 国外身份证项目新增需求,检测出身份证正面的人脸.最开始考虑mobilenet-ssd,经同事提醒,有现成的人脸库dlib,那就用传统方法尝试一下. dlib ...

  9. python换照片底色_Python 利用OpenCV给照片换底色的示例代码

    OpenCV的全称是:Open Source Computer Vision Library.OpenCV是一个基于BSD许可(开源)发行的跨平台计算机视觉库,可以运行在Linux.Windows和M ...

  10. Android相机预览,指定区域显示预览框,在区域内出现人脸进行人脸识别,并抓拍人脸照片存在本地,CameraX,虹软人脸识别

    效果图: 第一种是使用camerax进行预览,android camerax预览官方文档,主要通过imageAnalysis,抓帧进行图片处理,然后通过android自带的图片人脸识别FaceDete ...

最新文章

  1. 常用的linux的命令行操作
  2. php文章列表样式,css列表样式有哪些?css设置列表样式的方法
  3. (5.1.5)引擎管理——多服务器管理之中央管理服务器(CMS)
  4. 【洛谷】【USACO】P1118 数字三角形
  5. MyBatis多对多关联查询示例——MyBatis学习笔记之十八
  6. Hibernate连接mysql数据库并自动创建表
  7. 在雅加达EE TCK中使用Arquillian的可能方法
  8. uva 10077 - The Stern-Brocot Number System
  9. cocos2d-x移植android,Cocos2d-x Xcode 移植到 Android stutio
  10. unity 打开摄像头(图像倒立的变换) 和显示所有摄像头的名称
  11. 《电路分析导论(原书第12版)》一词汇表
  12. java url 请求 最大长度限制_Http请求 url 请求头 请求体 大小长度限制
  13. 图像处理中的白化处理
  14. 带你深入了解GPU、FPGA和ASIC
  15. 100天精通Andriod逆向——第5天:app逆向流程简介
  16. 双机互联攻略之超强、完全篇!
  17. 一场跨越时空的协奏:编钟、古琴与5G的“弦外之音”
  18. xman 2018夏solo题
  19. Fedora 15不能正常关机,总是卡死在关机画面上
  20. Linux开发板网络直连电脑的设置方法

热门文章

  1. NUnit 2.5.9 官网学游记(一) 入门
  2. sql 更改Table 字段名称 长度 类型
  3. 在一个字符串中找到第一个只出现一次的字符, 并返回它的位置
  4. cvSobel() 梯度和Sobel导数
  5. mac键盘符合对应含义(⌘ ⇧)
  6. NGINX 笔记 - GeoIP 限制策略配置
  7. 远程桌面凭据无法工作
  8. Java的强、软、弱、虚四种引用类型
  9. python 分类 投票_使用python+redis实现文章发布,投票,分组排名功能
  10. lib、dll文件的中函数的查看与lib、dll、pdb文件的介绍