随着去年alphago 的震撼表现,AI 再次成为科技公司的宠儿。AI涉及的领域众多,图像识别中的人脸识别是其中一个有趣的分支。百度的BFR,Face++的开放平台,汉王,讯飞等等都提供了人脸识别的API,对于老码农而言,自己写一小段代码,来看看一张图片中有几个人,没有高大上,只是觉得好玩,而且只需要7行代码。

import cv2

face_patterns = cv2.CascadeClassifier(r'/usr/local/opt/opencv3/share/OpenCV/haarcascades/haarcascade_frontalface_default.xml')

sample_image = cv2.imread(r'/Users/abel/201612.jpg')

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

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

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

cv2.imwrite(r'/Users/abel/201612_detected.png', sample_image);

第1行 引入 OpenCV

开源是伟大的,使我们视野更开阔,而且不用重复造轮子。这里没有用PIL,再结合特定算法,而是直接使用了OpenCV(http://opencv.org)。OpenCV是一个基于BSD许可发行的跨平台计算机视觉库,可以运行在Linux、Windows和Mac OS操作系统上,轻量而且高效,用C/C++编写,同时提供了Python、Ruby、MATLAB等接口,实现了图像处理和计算机视觉方面的很多通用算法。

第2行 加载分类器 cv2.CascadeClassifier

CascadeClassifier是Opencv中做人脸检测时候的一个级联分类器,该类中封装的是目标检测机制即滑动窗口机制+级联分类器的方式。数据结构包括Data和FeatureEvaluator两个主要部分。Data中存储的是从训练获得的xml文件中载入的分类器数据;而FeatureEvaluator中是关于特征的载入、存储和计算。这里采用的训练文件是OpenCV中默认提供的haarcascade_frontalface_default.xml。至于Haar,LBP的具体原理,可以参考opencv的相关文档,简单地,可以理解为人脸的特征数据。

第3行 加载目标图片 imread

人脸识别系统一般分为:人脸图像采集、人脸图像预处理、人脸图像特征提取以及匹配与识别。 简化起见,之间读入图片,这是一张去年中生代北京闭门会的集体照。

第4行 多尺度检测 detectMultiScale

调用 CascadeClassifier 中的调detectMultiScale函数进行多尺度检测,多尺度检测中会调用单尺度的方法detectSingleScale。

参数说明:

scaleFactor 是 图像的缩放因子

minNeighbors 为每一个级联矩形应该保留的邻近个数,可以理解为一个人周边有几个人脸

minSize 是检测窗口的大小

这些参数都是可以针对图片进行调整的,处理结果返回一个人脸的矩形对象列表。

第5行 和 第6行 为每个人脸画一个框

循环读取人脸的矩形对象列表,获得人脸矩形的坐标和宽高, 然后在原图片中画出该矩形框,调用的是OpenCV的rectangle 方法,其中矩形框的颜色等是可调整的。

第7行 保存检测后的结果

万事具备了,调用imwrite,将检测后的结果保存到指定的位置。结果图如下:

神秘感不是这7行代码,而是OpenCV中的相关实现,OpenCV的中文网也是一个学习体会的好场所。

因此,7行代码只是个噱头,真正的核心是OpenCV。然后,安装OpenCV环境的时候就是有一些坑,特别记录一下。

python画人脸代码_[转]7行Python代码的人脸识别相关推荐

  1. 简单20行python代码_用 20 行 python 代码实现人脸识别!Python实现就是这么简单!...

    今天给大家介绍一个世界上最简洁的人脸识别库 face_recognition,你可以使用 Python 和命令行工具进行提取.识别.操作人脸. 基于业内领先的 C++ 开源库 dlib 中的深度学习模 ...

  2. 50行python游戏代码_使用50行Python代码从零开始实现一个AI平衡小游戏

    使用50行Python代码从零开始实现一个AI平衡小游戏 发布时间:2020-10-23 09:26:14 来源:脚本之家 阅读:74 集智导读: 本文会为大家展示机器学习专家 Mike Shi 如何 ...

  3. 聚类 python 代码_不足 20 行 Python 代码,高效实现 k-means 均值聚类算法

    下载好向圈APP可以快速联系圈友 您需要 登录 才可以下载或查看,没有帐号?立即注册 x 不足 20 行 Python 代码,高效实现 k-means 均值聚类算法-1.jpg (143.81 KB, ...

  4. 50行的python游戏代码_使用50行Python教AI玩运杆游戏

    编译:yxy 出品:ATYUN订阅号 嗨,大家好!今天我想展示如何使用50行Python代码教一台机器来平衡杆!我们将使用标准的OpenAI Gym作为我们的测试环境,并只使用numpy创建我们的智能 ...

  5. python回测代码_只用3行Python回测你的交易策略

    作者|Lorenzo Ampil 编译|VK 来源|Towards Data Science 自从我开始学习投资,我接触了不同的股票分析方法-技术分析和基本面分析.我甚至读过很多关于这些技巧的书和文章 ...

  6. python画花女朋友_教你使用python画一朵花送女朋友

    本文实例为大家分享了用python画一朵花的具体代码,供大家参考,具体内容如下 第一种,画法 from turtle import * import time setup(600,800,0,0) s ...

  7. 如何用python画一朵花_教你使用python画一朵花送女朋友

    本文实例为大家分享了用python画一朵花的具体代码,供大家参考,具体内容如下 第一种,画法 from turtle import * import time setup(600,800,0,0) s ...

  8. 怎么样用python画一朵花_教你使用python画一朵花送女朋友

    本文实例为大家分享了用python画一朵花的具体代码,供大家参考,具体内容如下 第一种,画法 from turtle import * import time setup(600,800,0,0) s ...

  9. 测试nginx网站代码_在40行以下代码中使用NGINX进行A / B测试

    测试nginx网站代码 by Nitish Phanse 由Nitish Phanse 在40行以下代码中使用NGINX进行A / B测试 (A/B testing with NGINX in und ...

  10. python画日漫_不能错过的Python漫画

    原标题:不能错过的Python漫画 漫画内容取自: http://kaltap.com/2015/11/28/9-python-cartoons/ 翻译: 诗书塞外 Python部落()组织翻译, 禁 ...

最新文章

  1. 日本机器人实力大盘点,和Atlas的高调刷屏相比,日本机器人的默默崛起更让人忌惮...
  2. python函数概述_Python概述
  3. PowerDesigner逆向生成
  4. python加法赋值运算符为_Python学习-算术运算符,赋值运算符和复合运算符
  5. cocos2d-x打包后手机运行闪退_三国志11手机版,问题解决手册 1.4.4版本
  6. linux终端背景透明度设置,Ubuntu Terminal标签背景颜色设置
  7. javafx css_JavaFX缺少的功能调查:CSS
  8. java高级工程师认证考试_java高级工程师开放面试题集
  9. 电脑屏幕卡住了按什么都没反应_90%的电脑问题都能解决,只要学会这8个字!...
  10. 第五章 循环结构课内反思
  11. kafka安装使用说明
  12. linux查看文件的编码格式的方法 set fileencoding PYTHON
  13. httping的使用介绍
  14. 史秀峰计算机网络技术与应用第二版,史秀峰版《计算机网络技术与应用》期中测试.doc...
  15. 标准音阶及常用乐器频率范围对照表(完全版)
  16. WebGIS开发快速入门
  17. [python]变量作用域问题
  18. 学习vue笔记(5)
  19. python中dumps是什么意思_python中的dumps和loads区别
  20. C++使用 自定义函数 判断素数

热门文章

  1. excel文件类型自动判断
  2. 鲸探发布点评:7月7日发售陈孟昕系列绘画数字藏品
  3. 内存(DDR/DDR2/DDR3/DDR4)的速度等级和时钟频率———个人笔记
  4. 三菱触摸屏(GS2110)触摸屏经宇电AI-mobdus485通讯转换器与2个宇电70482D7多路温度模块直接通讯实例
  5. 用友预收冲应收处理流程
  6. Android开发之使用贝塞尔曲线实现黏性水珠下拉效果
  7. Android 自定义View漫飞舞超炫超浪漫特效
  8. 《通关!游戏设计之道(continue...)》
  9. 头的各个部位示意图_牛肉的部位图解与做法+牛肉各个部位分布图及质地简介...
  10. 《刻意练习:从新手到大师》读书笔记 觉得别人总结的不错拿来学习备份