基于face-recognition 进行人脸关键点识别(一):相关函数讲解

函数理解

1.face_recognition.load_image_file():加载图片文件

import face_recognition
import cv2

# 1.加载图片文件
image = face_recognition.load_image_file('D:\pycharm\pythonProject1\opencv_study\image and video/face.jpg')

# 2.显示图片,输出格式为RGB
cv2.imshow('img',image)
cv2.waitKey()
  • 结果显示

在这里插入图片描述

  • 原图与输出图比较【不影响最终结果】
    在这里插入图片描述
  • 补充:图片路径
# 1.加载图片文件
image = face_recognition.load_image_file('D:\pycharm\pythonProject1\opencv_study\image and video/face.jpg')

在这里插入图片描述
2.face_recognition.face_landmarks():识别人脸关键点

import face_recognition
import cv2

# 1.加载图片文件
image = face_recognition.load_image_file('D:\pycharm\pythonProject1\opencv_study\image and video/face.jpg')

# 2.调用face_recognition库中的方法:face_landmarks(),查看所有面部的所有特征
face_landmarks_list = face_recognition.face_landmarks(image, 'large')
# large:68个关键点,精确度高,计算量大,small:5个关键点,精确度低,计算量小,速度快

# 3.结果输出
print(face_landmarks_list)

# 4.查看输出类型:输出的是一个列表
print(type(face_landmarks_list))

  • 输出:

输出是包含面部特征字典的一个列表,包括眼睛,鼻子,嘴巴和下巴等
列表中包含几个字典代表有几张人脸
每个字典部分包含若干个特征点(x,y),总共有68个特征点

[{'chin': [(71, 148), (71, 156), (73, 165), (77, 174), (81, 182), (85, 189), (91, 197), (96, 204), (104, 206), (113, 205), (124, 200), (134, 193), (144, 184), (150, 174), (152, 162), (153, 150), (153, 138)], 'left_eyebrow': [(70, 134), (73, 132), (78, 132), (84, 134), (89, 136)], 'right_eyebrow': [(102, 136), (110, 132), (118, 129), (126, 129), (135, 131)], 'nose_bridge': [(95, 144), (95, 151), (94, 158), (94, 165)], 'nose_tip': [(91, 170), (94, 171), (97, 172), (100, 170), (104, 169)], 'left_eye': [(76, 144), (80, 141), (85, 141), (89, 145), (85, 147), (79, 147)], 'right_eye': [(110, 144), (114, 139), (120, 138), (125, 141), (121, 145), (115, 145)], 'top_lip': [(89, 183), (92, 181), (96, 180), (99, 181), (102, 180), (109, 181), (118, 181), (115, 182), (103, 183), (99, 183), (96, 183), (91, 184)], 'bottom_lip': [(118, 181), (110, 187), (103, 189), (100, 189), (97, 189), (93, 187), (89, 183), (91, 184), (96, 184), (99, 184), (102, 184), (115, 182)]}, {'chin': [(860, 127), (861, 137), (863, 147), (866, 157), (870, 166), (876, 174), (883, 181), (890, 188), (899, 189), (909, 187), (918, 181), (926, 173), (932, 164), (936, 155), (939, 144), (940, 133), (940, 122)], 'left_eyebrow': [(862, 115), (867, 112), (873, 113), (880, 115), (886, 118)], 'right_eyebrow': [(900, 118), (907, 114), (915, 111), (923, 111), (930, 114)], 'nose_bridge': [(893, 125), (893, 132), (892, 140), (892, 148)], 'nose_tip': [(888, 153), (891, 154), (894, 155), (897, 153), (901, 152)], 'left_eye': [(869, 125), (873, 122), (879, 122), (884, 126), (878, 127), (873, 128)], 'right_eye': [(906, 125), (911, 121), (917, 121), (921, 123), (917, 126), (912, 127)], 'top_lip': [(883, 167), (888, 164), (892, 162), (896, 163), (899, 161), (905, 163), (911, 164), (909, 165), (900, 165), (896, 166), (893, 165), (886, 167)], 'bottom_lip': [(911, 164), (906, 170), (901, 173), (897, 173), (893, 173), (888, 171), (883, 167), (886, 167), (893, 166), (896, 166), (900, 166), (909, 165)]}, {'chin': [(674, 127), (675, 138), (677, 149), (680, 159), (684, 169), (692, 178), (703, 185), (714, 190), (725, 191), (734, 188), (741, 181), (746, 173), (750, 163), (751, 152), (751, 142), (752, 131), (751, 121)], 'left_eyebrow': [(683, 123), (689, 117), (697, 116), (705, 116), (713, 118)], 'right_eyebrow': [(725, 117), (732, 113), (739, 111), (746, 110), (751, 115)], 'nose_bridge': [(720, 124), (721, 132), (722, 141), (723, 149)], 'nose_tip': [(714, 154), (718, 155), (723, 155), (726, 154), (730, 152)], 'left_eye': [(693, 126), (697, 124), (703, 123), (708, 126), (703, 128), (697, 128)], 'right_eye': [(729, 124), (734, 120), (739, 119), (743, 121), (740, 123), (735, 124)], 'top_lip': [(707, 167), (713, 166), (720, 165), (724, 165), (728, 164), (733, 164), (738, 163), (736, 164), (728, 166), (724, 167), (720, 167), (709, 167)], 'bottom_lip': [(738, 163), (733, 167), (729, 169), (725, 170), (720, 171), (714, 170), (707, 167), (709, 167), (720, 167), (724, 167), (728, 165), (736, 164)]}, {'chin': [(221, 127), (220, 135), (221, 144), (224, 153), (227, 161), (230, 169), (233, 177), (237, 184), (245, 186), (255, 184), (267, 179), (279, 173), (290, 165), (297, 154), (300, 141), (300, 126), (300, 113)], 'left_eyebrow': [(218, 111), (220, 110), (222, 109), (225, 110), (227, 112)], 'right_eyebrow': [(237, 107), (245, 103), (253, 101), (262, 102), (270, 104)], 'nose_bridge': [(233, 118), (231, 125), (229, 131), (227, 138)], 'nose_tip': [(226, 146), (229, 147), (233, 148), (237, 146), (241, 145)], 'left_eye': [(222, 123), (223, 119), (228, 119), (231, 121), (228, 124), (224, 125)], 'right_eye': [(248, 118), (251, 114), (256, 113), (262, 114), (258, 118), (253, 119)], 'top_lip': [(233, 168), (230, 160), (231, 157), (233, 158), (237, 156), (244, 157), (252, 162), (249, 163), (238, 161), (234, 162), (232, 163), (234, 167)], 'bottom_lip': [(252, 162), (246, 167), (240, 169), (237, 170), (234, 171), (232, 169), (233, 168), (234, 167), (233, 162), (235, 162), (238, 161), (249, 163)]}, {'chin': [(435, 59), (436, 73), (439, 86), (442, 99), (448, 112), (457, 122), (467, 131), (480, 137), (492, 139), (503, 137), (515, 128), (525, 119), (533, 107), (539, 95), (542, 80), (543, 65), (541, 52)], 'left_eyebrow': [(444, 48), (451, 43), (461, 40), (471, 41), (481, 45)], 'right_eyebrow': [(499, 44), (508, 40), (517, 38), (525, 40), (531, 46)], 'nose_bridge': [(491, 56), (492, 65), (493, 74), (494, 83)], 'nose_tip': [(483, 90), (488, 92), (494, 94), (499, 91), (503, 88)], 'left_eye': [(459, 56), (464, 53), (471, 53), (477, 57), (471, 59), (464, 59)], 'right_eye': [(503, 56), (508, 51), (515, 51), (521, 54), (516, 57), (509, 57)], 'top_lip': [(474, 108), (482, 105), (489, 103), (494, 104), (498, 102), (505, 104), (511, 106), (509, 107), (499, 107), (494, 107), (489, 107), (477, 108)], 'bottom_lip': [(511, 106), (505, 111), (499, 114), (494, 114), (489, 114), (482, 112), (474, 108), (477, 108), (488, 107), (494, 108), (498, 107), (509, 107)]}]

<class 'list'>
  • 遍历输出


import face_recognition
import cv2

# 1.加载图片文件
image = face_recognition.load_image_file('D:\pycharm\pythonProject1\opencv_study\image and video/face.jpg')

# 2.调用face_recognition库中的方法:face_landmarks()
face_landmarks_list = face_recognition.face_landmarks(image, model='large')

# 3.遍历输出
for face_feature in face_landmarks_list:
    print(face_feature)

# 4.列表的长度代表有几张人脸
num = len(face_landmarks_list)
print(num)

- 结果说明:

遍历输出之后,有5个字典,表示共有5张人脸
列表的长度为5,也表示图片中有5张人脸
输出显示有眼睛,鼻子,嘴巴等特征

{'chin': [(71, 148), (71, 156), (73, 165), (77, 174), (81, 182), (85, 189), (91, 197), (96, 204), (104, 206), (113, 205), (124, 200), (134, 193), (144, 184), (150, 174), (152, 162), (153, 150), (153, 138)], 'left_eyebrow': [(70, 134), (73, 132), (78, 132), (84, 134), (89, 136)], 'right_eyebrow': [(102, 136), (110, 132), (118, 129), (126, 129), (135, 131)], 'nose_bridge': [(95, 144), (95, 151), (94, 158), (94, 165)], 'nose_tip': [(91, 170), (94, 171), (97, 172), (100, 170), (104, 169)], 'left_eye': [(76, 144), (80, 141), (85, 141), (89, 145), (85, 147), (79, 147)], 'right_eye': [(110, 144), (114, 139), (120, 138), (125, 141), (121, 145), (115, 145)], 'top_lip': [(89, 183), (92, 181), (96, 180), (99, 181), (102, 180), (109, 181), (118, 181), (115, 182), (103, 183), (99, 183), (96, 183), (91, 184)], 'bottom_lip': [(118, 181), (110, 187), (103, 189), (100, 189), (97, 189), (93, 187), (89, 183), (91, 184), (96, 184), (99, 184), (102, 184), (115, 182)]}
{'chin': [(860, 127), (861, 137), (863, 147), (866, 157), (870, 166), (876, 174), (883, 181), (890, 188), (899, 189), (909, 187), (918, 181), (926, 173), (932, 164), (936, 155), (939, 144), (940, 133), (940, 122)], 'left_eyebrow': [(862, 115), (867, 112), (873, 113), (880, 115), (886, 118)], 'right_eyebrow': [(900, 118), (907, 114), (915, 111), (923, 111), (930, 114)], 'nose_bridge': [(893, 125), (893, 132), (892, 140), (892, 148)], 'nose_tip': [(888, 153), (891, 154), (894, 155), (897, 153), (901, 152)], 'left_eye': [(869, 125), (873, 122), (879, 122), (884, 126), (878, 127), (873, 128)], 'right_eye': [(906, 125), (911, 121), (917, 121), (921, 123), (917, 126), (912, 127)], 'top_lip': [(883, 167), (888, 164), (892, 162), (896, 163), (899, 161), (905, 163), (911, 164), (909, 165), (900, 165), (896, 166), (893, 165), (886, 167)], 'bottom_lip': [(911, 164), (906, 170), (901, 173), (897, 173), (893, 173), (888, 171), (883, 167), (886, 167), (893, 166), (896, 166), (900, 166), (909, 165)]}
{'chin': [(674, 127), (675, 138), (677, 149), (680, 159), (684, 169), (692, 178), (703, 185), (714, 190), (725, 191), (734, 188), (741, 181), (746, 173), (750, 163), (751, 152), (751, 142), (752, 131), (751, 121)], 'left_eyebrow': [(683, 123), (689, 117), (697, 116), (705, 116), (713, 118)], 'right_eyebrow': [(725, 117), (732, 113), (739, 111), (746, 110), (751, 115)], 'nose_bridge': [(720, 124), (721, 132), (722, 141), (723, 149)], 'nose_tip': [(714, 154), (718, 155), (723, 155), (726, 154), (730, 152)], 'left_eye': [(693, 126), (697, 124), (703, 123), (708, 126), (703, 128), (697, 128)], 'right_eye': [(729, 124), (734, 120), (739, 119), (743, 121), (740, 123), (735, 124)], 'top_lip': [(707, 167), (713, 166), (720, 165), (724, 165), (728, 164), (733, 164), (738, 163), (736, 164), (728, 166), (724, 167), (720, 167), (709, 167)], 'bottom_lip': [(738, 163), (733, 167), (729, 169), (725, 170), (720, 171), (714, 170), (707, 167), (709, 167), (720, 167), (724, 167), (728, 165), (736, 164)]}
{'chin': [(221, 127), (220, 135), (221, 144), (224, 153), (227, 161), (230, 169), (233, 177), (237, 184), (245, 186), (255, 184), (267, 179), (279, 173), (290, 165), (297, 154), (300, 141), (300, 126), (300, 113)], 'left_eyebrow': [(218, 111), (220, 110), (222, 109), (225, 110), (227, 112)], 'right_eyebrow': [(237, 107), (245, 103), (253, 101), (262, 102), (270, 104)], 'nose_bridge': [(233, 118), (231, 125), (229, 131), (227, 138)], 'nose_tip': [(226, 146), (229, 147), (233, 148), (237, 146), (241, 145)], 'left_eye': [(222, 123), (223, 119), (228, 119), (231, 121), (228, 124), (224, 125)], 'right_eye': [(248, 118), (251, 114), (256, 113), (262, 114), (258, 118), (253, 119)], 'top_lip': [(233, 168), (230, 160), (231, 157), (233, 158), (237, 156), (244, 157), (252, 162), (249, 163), (238, 161), (234, 162), (232, 163), (234, 167)], 'bottom_lip': [(252, 162), (246, 167), (240, 169), (237, 170), (234, 171), (232, 169), (233, 168), (234, 167), (233, 162), (235, 162), (238, 161), (249, 163)]}
{'chin': [(435, 59), (436, 73), (439, 86), (442, 99), (448, 112), (457, 122), (467, 131), (480, 137), (492, 139), (503, 137), (515, 128), (525, 119), (533, 107), (539, 95), (542, 80), (543, 65), (541, 52)], 'left_eyebrow': [(444, 48), (451, 43), (461, 40), (471, 41), (481, 45)], 'right_eyebrow': [(499, 44), (508, 40), (517, 38), (525, 40), (531, 46)], 'nose_bridge': [(491, 56), (492, 65), (493, 74), (494, 83)], 'nose_tip': [(483, 90), (488, 92), (494, 94), (499, 91), (503, 88)], 'left_eye': [(459, 56), (464, 53), (471, 53), (477, 57), (471, 59), (464, 59)], 'right_eye': [(503, 56), (508, 51), (515, 51), (521, 54), (516, 57), (509, 57)], 'top_lip': [(474, 108), (482, 105), (489, 103), (494, 104), (498, 102), (505, 104), (511, 106), (509, 107), (499, 107), (494, 107), (489, 107), (477, 108)], 'bottom_lip': [(511, 106), (505, 111), (499, 114), (494, 114), (489, 114), (482, 112), (474, 108), (477, 108), (488, 107), (494, 108), (498, 107), (509, 107)]}
5
  • 11
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值