face_recognition 人脸识别

前言

之前实践了下face++在线人脸识别版本,这回做一下离线版本。github 上面有关于face_recognition的相关资料,本人只是做个搬运工,对其中的一些内容进行搬运,对其中一些例子进行实现。

官方描述:

face_recognition 是一个强大、简单、易上手的人脸识别开源项目,并且配备了完整的开发文档和应用案例,特别是兼容树莓派系统。本项目是世界上最简洁的人脸识别库,你可以使用 Python 和命令行工具提取、识别、操作人脸。本项目的人脸识别是基于业内领先的 C++ 开源库 dlib 中的深度学习模型,用 Labeled Faces in the Wild 人脸数据集进行测试,有高达 99.38% 的准确率。但对小孩和亚洲人脸的识别准确率尚待提升。

(关于兼容树莓派,以后有板子了再做一下)

下面两个链接划重点

https://github.com/ageitgey/face_recognition/blob/master/README_Simplified_Chinese.md
https://face-recognition.readthedocs.io/en/latest/face_recognition.html

环境配置

  • ubuntu16.04(其他环境的安装可以参考第一个链接,官方有说明)
  • pycharm (可忽略,怎么舒服怎么来)
  • python3
  • opencv (我的是4.1.2,三点几的版本应该也一样)

实际上只需要安装 face_recognition,当然,没有 opencv 的也需要安装一下 opencv

pip3 install face_recognition

图片准备

由于需要做一些图片的比对,因此需要准备一些图片,本文图片取自以下链接

https://www.zhihu.com/question/314169580/answer/872770507

接下来开始操作

官方还有提供命令行的操作(这个没去做),本文不做这个,我们只要是要在python中用face_recognition,因此定位到这一块。

这个api文档地址就是上面的第二个链接。进去之后可以看到:

part1.识别图片中的人是谁

# part1
# 识别图片中的人是谁import face_recognition
known_image = face_recognition.load_image_file("lyf1.jpg")
unknown_image = face_recognition.load_image_file("lyf2.jpg")lyf_encoding = face_recognition.face_encodings(known_image)[0]
unknown_encoding = face_recognition.face_encodings(unknown_image)[0]results = face_recognition.compare_faces([lyf_encoding], unknown_encoding)	
# A list of True/False values indicating which known_face_encodings match the face encoding to checkprint(type(results))
print(results)if results[0] == True:print("yes")
else:print("no")

结果

<class 'list'>
[True]
yes

part2.从图片中找到人脸

# part2
# 从图片中找到人脸(定位人脸位置)import face_recognition
import cv2image = face_recognition.load_image_file("lyf1.jpg")face_locations_useCNN = face_recognition.face_locations(image,model='cnn')
# model – Which face detection model to use. “hog” is less accurate but faster on CPUs.
# “cnn” is a more accurate deep-learning model which is GPU/CUDA accelerated (if available). The default is “hog”.face_locations_noCNN=face_recognition.face_locations(image)
# A list of tuples of found face locations in css (top, right, bottom, left) order
# 因为返回值的顺序是这样子的,因此在后面的for循环里面赋值要注意按这个顺序来print("face_location_useCNN:")
print(face_locations_useCNN)
face_num1=len(face_locations_useCNN)
print(face_num1)       # The number of facesprint("face_location_noCNN:")
print(face_locations_noCNN)
face_num2=len(face_locations_noCNN)
print(face_num2)       # The number of faces
# 到这里为止,可以观察两种情况的坐标和人脸数,一般来说,坐标会不一样,但是检测出来的人脸数应该是一样的
# 也就是说face_num1 = face_num2; face_locations_useCNN 和 face_locations_noCNN 不一样org = cv2.imread("lyf1.jpg")
img = cv2.imread("lyf1.jpg")
cv2.imshow("lyf1.jpg",img)  # 原始图片# Go to get the data and draw the rectangle
# use CNN
for i in range(0,face_num1):top = face_locations_useCNN[i][0]right = face_locations_useCNN[i][1]bottom = face_locations_useCNN[i][2]left = face_locations_useCNN[i][3]start = (left, top)end = (right, bottom)color = (0,255,255)thickness = 2cv2.rectangle(img, start, end, color, thickness)    # opencv 里面画矩形的函数# Show the result
cv2.imshow("useCNN",img)# for face_location in face_locations_noCNN:
#
#     # Print the location of each face in this image
#     top, right, bottom, left = face_location
# # 等价于下面的这种写法for i in range(0,face_num2):top = face_locations_noCNN[i][0]right = face_locations_noCNN[i][1]bottom = face_locations_noCNN[i][2]left = face_locations_noCNN[i][3]start = (left, top)end = (right, bottom)color = (0,255,255)thickness = 2cv2.rectangle(org, start, end, color, thickness)cv2.imshow("no cnn ",org)cv2.waitKey(0)
cv2.destroyAllWindows()

结果

face_location_useCNN:
[(223, 470, 427, 266)]
1
face_location_noCNN:
[(242, 489, 464, 266)]
1

图片效果大致是这样

part3.找到人脸并将其裁剪打印出来(使用 cnn 定位人脸)

# part3
# 找到人脸并将其裁剪打印出来(使用cnn定位人脸)from PIL import Image
import face_recognition# Load the jpg file into a numpy array
image = face_recognition.load_image_file("lyf1.jpg")face_locations = face_recognition.face_locations(image, number_of_times_to_upsample=0, model="cnn")print("I found {} face(s) in this photograph.".format(len(face_locations)))for face_location in face_locations:top, right, bottom, left = face_locationprint("A face is located at pixel location Top: {}, Left: {}, Bottom: {}, Right: {}".format(top, left, bottom, right))face_image = image[top:bottom, left:right]pil_image = Image.fromarray(face_image)pil_image.show()

结果

I found 1 face(s) in this photograph.
A face is located at pixel location Top: 205, Left: 276, Bottom: 440, Right: 512

图片效果大致是这样

part4.识别单张图片中人脸的关键点

# part4 识别单张图片中人脸的关键点from PIL import Image, ImageDraw
import face_recognition# Load the jpg file into a numpy array
image = face_recognition.load_image_file("lyf1.jpg")# Find all facial features in all the faces in the image
face_landmarks_list = face_recognition.face_landmarks(image)
# print(face_landmarks_list)print("I found {} face(s) in this photograph.".format(len(face_landmarks_list)))# Create a PIL imagedraw object so we can draw on the picture
pil_image = Image.fromarray(image)
d = ImageDraw.Draw(pil_image)for face_landmarks in face_landmarks_list:# Print the location of each facial feature in this imagefor facial_feature in face_landmarks.keys():print("The {} in this face has the following points: {}".format(facial_feature, face_landmarks[facial_feature]))# Let's trace out each facial feature in the image with a line!for facial_feature in face_landmarks.keys():d.line(face_landmarks[facial_feature], width=5)# Show the picture
pil_image.show()

结果

I found 1 face(s) in this photograph.
The left_eyebrow in this face has the following points: [(305, 285), (321, 276), (340, 277), (360, 281), (377, 288)]
The right_eye in this face has the following points: [(422, 313), (432, 303), (446, 302), (459, 305), (449, 312), (435, 314)]
The nose_bridge in this face has the following points: [(394, 309), (394, 331), (395, 354), (396, 375)]
The right_eyebrow in this face has the following points: [(407, 287), (424, 278), (442, 273), (461, 272), (478, 279)]
The bottom_lip in this face has the following points: [(429, 409), (419, 421), (408, 428), (398, 430), (389, 429), (377, 424), (364, 412), (370, 413), (389, 414), (398, 415), (407, 413), (423, 411)]
The chin in this face has the following points: [(289, 295), (291, 323), (296, 351), (303, 378), (315, 403), (332, 428), (353, 448), (376, 464), (400, 467), (422, 461), (441, 444), (459, 425), (473, 403), (484, 377), (490, 351), (493, 323), (493, 296)]
The top_lip in this face has the following points: [(364, 412), (377, 407), (389, 403), (397, 406), (406, 402), (417, 405), (429, 409), (423, 411), (406, 412), (397, 414), (389, 413), (370, 413)]
The left_eye in this face has the following points: [(327, 308), (339, 304), (353, 306), (364, 314), (352, 317), (338, 316)]
The nose_tip in this face has the following points: [(375, 383), (386, 387), (396, 390), (407, 385), (416, 381)]

图片效果

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/12501.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

chatgpt赋能python:Python人脸追踪:技术介绍与应用

Python人脸追踪&#xff1a;技术介绍与应用 Python作为一门极为流行的编程语言&#xff0c;其在人工智能领域的应用也不断得到拓展和应用&#xff0c;其中Python人脸追踪技术已经成为广泛应用的一个领域。本篇文章将介绍Python人脸追踪技术的原理和应用&#xff0c;以便读者更…

face_recognition结合opencv进行多人脸识别

目录 step1&#xff1a;准备好opencv&#xff0c;numpy和face_recognition三个库 step2&#xff1a;准备好人脸图像 step3&#xff1a;利用opencv读取三张图片 step4&#xff1a;将图片转为特征向量&#xff0c;并将向量和名字添加到列表中&#xff0c;一一对应 step5&#…

chatgpt赋能Python-python人脸识别步骤

简介 Python是一种优秀的编程语言&#xff0c;它广泛应用于人工智能、数据科学、Web应用程序开发等领域。其中&#xff0c;人脸识别是Python应用程序中的重要一环。 本文将介绍Python人脸识别的具体步骤&#xff0c;希望对初学者有所帮助。 Python人脸识别步骤 安装必要的库…

chatgpt赋能Python-python3人脸识别

人脸识别的python3应用&#xff1a;一步步实现高精度的面部识别 Python3作为一种高效的编程语言&#xff0c;具有广泛的应用场景。近年来&#xff0c;人脸识别技术在安防、金融、医疗等领域中逐渐普及&#xff0c;运用Python3进行人脸识别具有巨大的潜力。本文将介绍如何使用P…

万字科普ChatGPT-4为何会颠覆人类社会

来源&#xff1a;图灵人工智能 视频来源&#xff1a;超智能体 视频是关于GPT的底层原理和未来影响。将抛开技术细节&#xff0c;少用专业名词&#xff0c;在整体功能上讲解 ChatGPT 的「工作原理」「制造过程」「涌现的能力」「未来的影响」以及「如何应对」&#xff1a; 1、Ch…

断案三字诀

2019独角兽企业重金招聘Python工程师标准>>> 孟一刀&#xff1a;断案三字诀 2012-11-20 孟黎明&#xff0c;1973年6月生&#xff0c;1992年8月起至今在法院工作&#xff0c;曾任安吉法院调解中心主任、民一庭庭长&#xff0c;现任院党组成员、纪检组长。2010年2月…

科研如断案

最近我又把《神探狄仁杰》第一部看完了&#xff0c;觉得确实很不错。狄仁杰身为一朝宰相&#xff0c;拥有“一人之下&#xff0c;万人之上”的权力。他始终以百姓的安居乐业和天下的兴亡为己任。在电视剧里面&#xff0c;他与坏人斗智斗勇&#xff0c;时时险象环生&#xff0c;…

c语言经典断案程序、杨辉三角程序、跳水概率程序

/* 5位运动员参加了10米台跳水比赛&#xff0c;有人让他们预测比赛结果 A选手说&#xff1a;B第二&#xff0c;我第三&#xff1b; B选手说&#xff1a;我第二&#xff0c;E第四&#xff1b; C选手说&#xff1a;我第一&#xff0c;D第二&#xff1b; D选手说&#xff1a;C最后…

蓝桥杯07 java 断案

题目描述 公安人员审问甲、乙、丙、丁四个嫌疑犯&#xff0c;已确知&#xff0c;这四个人当中仅有一人是偷窃者&#xff0c;还知道这四个人的答话&#xff0c;要么完全诚实&#xff0c;要么完全说谎。在回答公安人员的问话中&#xff1a; 甲说&#xff1a;“乙没有偷&#xf…

试题 算法提高 断案

问题描述   公安人员审问甲、乙、丙、丁四个嫌疑犯&#xff0c;已确知&#xff0c;这四个人当中仅有一人是偷窃者&#xff0c;还知道这四个人的答话&#xff0c;要么完全诚实&#xff0c;要么完全说谎。在回答公安人员的问话中&#xff1a;   甲说&#xff1a;“乙没有偷&a…

论文投稿指南——中国(中文EI)期刊推荐(第6期)

&#x1f680; EI是国际知名三大检索系统之一&#xff0c;在学术界的知名度和认可度仅次于SCI&#xff01;&#x1f384;&#x1f388; 【前言】 想发论文怎么办&#xff1f;手把手教你论文如何投稿&#xff01;那么&#xff0c;首先要搞懂投稿目标——论文期刊。其中&#xf…

关于网页版chatgpt喂投的一些讲解

ChatGPT云炬学长 喂投的定义及使用场景&#xff1a; 这一部分主要是解决这三个问题&#xff1a;啥是喂投。我们为什么要喂投。以及什么场景下面会用到喂投。 从AI专业名词的角度来说&#xff0c;并不存在“喂投”这么一个行为&#xff0c;这是一个不太专业化的俗称&#xff…

老马闲评数字化(4)做数字化会不会被供应商拿捏住

“老马闲评数字化”系列文章正在“深圳行云创新”公众号连载&#xff0c;感兴趣的朋友请关注我们的公众号&#xff0c;不迷路…… 导语 开年过后业务特别的繁忙&#xff0c;出差也比较多&#xff0c;所以有段时间没更新了&#xff0c;对不住大家&#xff01; 上一集&#xff08…

被遗忘的技术支持岗位

文/明道云创始人任向晖 我发现一个现象。在我们行业&#xff0c;谈论营销获客、销售增长、产品思维等话题的文章很多&#xff0c;但是谈论技术支持&#xff08;Technical Support&#xff09;话题的文章几乎没有。似乎我们行业根本没有这个职能一样。在企业内部&#xff0c;技术…

《软件工程导论》期末复习总结

《软件工程导论》期末复习总结 适用教材&#xff1a;《软件工程与实践&#xff08;第3版》&#xff0c;贾铁军、李学相、王学军主编&#xff0c;清华大学出版社 提示&#xff1a;与教材内容不完全匹配&#xff0c;有所取舍。 写在前面&#xff1a; 这份复习总结是笔者根据老师…

巴比特 | 元宇宙每日必读:传苹果MR头显敲定年内上线,库克认为此时值得进场,预计第一年的销量仅为100万台左右...

摘要&#xff1a;据财联社报道&#xff0c;苹果的MR头显曾多次跳票&#xff0c;最新消息称&#xff0c;苹果CEO蒂姆•库克下场拍板——2023年推出首款MR产品。库克认为此时值得进场&#xff0c;且并不介意初始销量惨淡。据两位熟悉苹果计划的人士透露&#xff0c;苹果预计所述设…

招标 | 近期隐私计算项目招标中标32(江阴智慧港口、广西壮族自治区公安厅、湛江市政务服务数据管理局、深圳信息职业技术学院等)

开放隐私计算 1 招标 1、江阴智慧港口公共服务平台 项目名称&#xff1a;江阴智慧港口公共服务平台 公告日期&#xff1a;2023-03-11 采购单位&#xff1a;江阴港口发展有限公司 项目编号&#xff1a;QYYC23-031 项目投资&#xff1a;3200万元&#xff08;人民币&#xff09; …

2022元宇宙十大 “闪光时刻”

图片来源&#xff1a;由无界版图 AI 绘画工具生成 2022年&#xff0c;“元宇宙”一词从头火到脚&#xff0c;但就像每一次新事物诞生之初&#xff0c;变局与骗局&#xff0c;永远是一枚硬币的两个面。毫无疑问&#xff0c;围绕“元宇宙”出现了太多的骗子和骗局&#xff0c;太多…

Character.AI成为新晋AI聊天应用爆款;谷歌推出 Google Slides AI 图像生成

&#x1f989; AI新闻 &#x1f680; Character.AI&#xff1a;首周下载量超越ChatGPT&#xff0c;成为新晋AI聊天应用爆款 摘要&#xff1a;Character.AI是一款受欢迎的人工智能聊天应用&#xff0c;用户可以自由创建AI角色&#xff0c;并与它们聊天。该应用于2023年5月23日…

【软考系统规划与管理师笔记】第1篇 信息系统综合知识

目录 写在前面 1. 信息的基本概念 2. 信息的定量描述 3. 信息的传输模型 3. 信息系统的主要性能指标 4. 信息化的层次 5. 电子政务和电子商务 6. 信息系统 6.1 系统开发的方法 6.2 信息系统总体规划 6.3 信息系统规划内容 7 IT战略 8 习题收集 写在前面 系统规划与…