什么,只要一行代码就能搞定人脸识别?当然是假的啦。

虽然不能一行就搞定,依靠python强大的人脸识别包,只要十多行代码完全可以实现人脸识别的功能。这就叫站在巨人的肩膀上,看得更高更远。

face-recognition,使用最先进的人脸识别技术构建而成的python包,而且具有深度学习功能。经测试识别正确率高达99.38%。确实很高。

安装

因为face-recognition使用到了dlib库,这是c++写的一个包含机器学习,计算机视觉等算法的库,所以使用之前要先安装dlib。不过这还不行,dlib库又依赖一个叫做boost的东西,总之有些麻烦,所以我就不写详细步骤啦╰( ̄▽ ̄)╭。linux下安装比较简单,命令行下几行代码就搞定,windows安装见这里。

所有工作准备好之后,使用pip安装:

pip install face-recognition

人脸检测

如何检测一张图片中的人脸?face-recognition把带人脸的图片看成是由像素组成的二维数组,使用face_locations方法返回识别到的人脸的坐标(上下左右)。

这样就可以啦,接下来只要把这些人脸坐标用矩形框圈出来,然后保存即可。

import face_recognition

from skimage import draw, io

%matplotlib inline

# 图片文件

files = "F:\data\people.jpg"

# 加载图片

image = face_recognition.load_image_file(files)

# 识别人脸坐标

face_locations = face_recognition.face_locations(image)

# 我们在此使用之前介绍过的skimage库进行绘制

# 读出的图片在skimage中不能使用,故重新导入

img = io.imread(files)

print("I found {} face(s) in this photograph.".format(len(face_locations)))

# 循环标记人脸

for face_location in face_locations:

# 每个人脸的坐标

top, right, bottom, left = face_location

# 为每个人脸画四边形

# polygon_perimeter作用是绘制不填充的多边形

rr, cc = draw.polygon_perimeter([top, top, bottom, bottom], [left, right, right, left])

# 设置颜色为红色

draw.set_color(img, [rr, cc], [255, 0, 0])

# 保存

io.imsave('F:result.jpg', img)

I found 24 face(s) in this photograph.

我们打开图片看看效果。

import matplotlib.pyplot as plt

from skimage import io

origin = io.imread(files)

reco = io.imread('f:result.jpg')

plt.subplot(1, 2, 1)

plt.imshow(origin)

plt.subplot(1, 2, 2)

plt.imshow(reco)

效果不错,都识别出来了。

人脸识别

既然能够识别出有没有人脸,有可能知道这个人是谁吗?当然可以了,前提是你要提供一张包含某个人脸的照片。使用face_encodings对人脸进行编码,然后使用compare_faces方法比较即可。看代码。

import face_recognition

# 首先打开一张已经知道是谁的照片,然后打开另一张照片

zhuyizhi_image = face_recognition.load_image_file("F:zhuyizhi.jpg")

unknown_image = face_recognition.load_image_file("F:unknow.jpg")

# 识别出已知和未知人脸的面部特征

zhu_face_encoding = face_recognition.face_encodings(zhuyizhi_image)[0]

unknown_face_encoding = face_recognition.face_encodings(unknown_image)[0]

# 可以添加多个已知的人脸照片

known_faces = [

zhu_face_encoding,

]

# 比较已知人脸和未知人脸,返回结果为true或者false。

results = face_recognition.compare_faces(known_faces, unknown_face_encoding)

print("Is the unknown face a picture of zhuyizhi? {}".format(results[0]))

print("Is the unknown face a new person that we've never seen before? {}".format(not True in results))

Is the unknown face a picture of zhuyizhi? True

Is the unknown face a new person that we've never seen before? False

除了能检测出和识别出人脸之外,face-recognition还提供深度学习参数的支持,使得识别率更高。

本人才疏学浅,上文中难免有些错误,还请各位品评指正。如果觉得写的还行,欢迎大家多多分享哈。

php一行代码实现人脸识别,一行代码搞定人脸识别相关推荐

  1. 如何通过一个SDK轻松搞定人脸识别,拯救初入职场的程序猿

    摘要:看一个SDK如何拯救初入职场的程序猿小Hi- [职场初体验] 时间过得真快,距离上次给小Hi安排"人脸识别"的开发任务(话接上期:[快速玩转华为云开发]小Hi拍了拍你,基于华 ...

  2. 阿里云HBase发布冷存储特性,助你不改代码,1/3成本轻松搞定冷数据处理

    9月27日,阿里云HBase发布了冷存储特性.用户可以在购买云HBase实例时选择冷存储作为一个附加的存储空间,并通过建表语句指定将冷数据存放在冷存储介质上面,从而降低存储成本.冷存储的存储成本仅为高 ...

  3. 调试一段代码两个小时都没搞定,继续死磕还是寻找其他方式?

    hi-好久不见,在家办公的你们还好吗? 听闻有人克服着网络不好.工作环境嘈杂的困难,已经连续待机 20 几个小时了.没办法,疫情当前,这点困难不算啥,该克服的还是要克服.实在不行,试试番茄工作法,提高 ...

  4. 申请软著用的60页代码,半个小时轻松搞定

    规则 软件著作权提交源代码格式四个要求 代码要求是提供原始的代码 不是关键代码 语法上要求完整 例如C++代码应该是 include 之类开头的 而不是直接一开始就是函数 C#代码应该是 using ...

  5. 玩转华为云开发|老板万万没想到:刚入职的我一人就搞定人脸识别开发

    摘要:程序猿小Hi入职公司不到三个月,就被老板单独叫到了办公室-- 初创公司R:刚刚创立,致力于通过信息化技术,帮助中小企业数字化转型,华丽转身. 公司成员:老板.程序猿小Hi.- - 程序猿小Hi入 ...

  6. 50代码HTML5 Canvas 3D 编辑器优雅搞定

    1024程序员节刚过,手痒想实现一个html的3d编辑器,看了three.js 同时还看了网上流传已久的<<基于 HTML5 Canvas 的简易 2D 3D 编辑器>>,都觉 ...

  7. 数据翻译的代码辅助插件,一个注解搞定,减少30%SQL代码量

    一.开源项目简介 Easy Trans是一款用于做数据翻译的代码辅助插件,利用MyBatis Plus/JPA/BeetlSQL 等ORM框架的能力自动查表,让开发者可以快速的把ID/字典码 翻译为前 ...

  8. 四种百度文库资源直接下载的方法!不用代码,不用券!一键搞定!

    我们在百度文库里找资料到好的资料,一下载就会出现,所需下载券多少多少个:或者就是积分不足不能下载. 花了好长的时间找到资源,却不能下载,顿时感觉整个人都不好了!今天小编就为大家带来四个可以在直接下载百 ...

  9. php验证码原代码(三个php文件搞定验证码)原代码!原代码!原代码!

    text.php <!DOCTYPE html> <html> <head> <meta charset="utf-8"> < ...

  10. HyperLPR3车牌识别-五分钟搞定: 中文车牌识别光速部署与使用

    简介 HyperLPR在2023年初已经更新到了v3的版本,该版本与先前的版本一样都是用于识别中文车牌的开源图像算法项目,最新的版本的源码可从github中提取:https://github.com/ ...

最新文章

  1. 智能人脸识别行业解决方案
  2. 我的世界1.7.2 java_我的世界Java版1.7版本种子分享
  3. 分析一下mp4格式的trak -> mdia -> minf -> stbl -> stts、stsc 这两个box信息
  4. POSIX互斥锁api函数
  5. hashmap put方法_Java HashMap put()方法与示例
  6. ggforce|绘制区域轮廓-区域放大-寻找你的“onepiece”
  7. remix卡在android root,小米平板刷入remixeOS后怎么root?
  8. a20添加usb2net的驱动方法
  9. 王者荣耀s12赛季服务器维护,王者荣耀S12赛季延期,这篇攻略让我段位狂涨!
  10. 嵌入式电路设计(第一个商业pcb电路图绘制)
  11. 以太坊私链环境搭建和发币全过程
  12. 高中电子技术——继电器
  13. Sublime Text 2安装图解
  14. 计算机考研复试面试常问问题 数据结构篇(上)
  15. 广域网用什么软件可以更好地传输大文件和海量文件?
  16. 让你在面试前先写需求的公司是什么公司
  17. 怎么用计算机算组合数c,排列组合c怎么算 公式是什么
  18. html表格标题标签_HTML标题标签
  19. 支持P2P传输的M3U8播放器
  20. 专访Women in AI学者黄惠:绘图形之梦,寻突破之门

热门文章

  1. 【揭秘】中国四大银行的大数据应用已到了哪个阶段?
  2. OpenGL超级宝典(第7版)笔记15 前三章实例 下个五子棋全代码 (附)
  3. 电机学、电机拖动相关知识(试着更新电机的相关知识,感谢指出错误)
  4. java虚拟机家族种类
  5. Java之API的使用
  6. java中bool_java中boolean用法
  7. 优酷土豆并购是如虎添翼
  8. DIgSILENT出图到Matlab画图到Visio画图全过程
  9. html5音乐播放器格式midi,HTML5 Audio时代的MIDI音乐文件播放
  10. ZooKeeper 会话的秘密 快偷偷过来瞧一瞧!!!