根据这篇文章复现学习的
mtcnn 原理
有些 jpg 能识别,但也有一些图片不能,显示那个画矩形框的 I 没定义。不知道为啥…
#一张图片内的人脸识别
from mtcnn.mtcnn import MTCNN
import cv2
#这里 mac 的路径得 copy absolute path
img = cv2.imread("/Users/sinkarsenic/PycharmProjects/masklearn/IMG_1386.JPG")
detector = MTCNN()
face = detector.detect_faces(img)
print(face)
#这里比原来加了个 for 循环,可以整多个人头了
l = len(face)
for i in range(l-1):
face1 = face[i]
#画矩形框
box = face1["box"]
I = cv2.rectangle(img, (box[0],box[1]),(box[0]+box[2], box[1]+box[3]), (255, 0, 0), 2)
#画关键点
left_eye = face1["keypoints"]["left_eye"]
right_eye = face1["keypoints"]["right_eye"]
nose = face1["keypoints"]["nose"]
mouth_left = face1["keypoints"]["mouth_left"]
mouth_right = face1["keypoints"]["mouth_right"]
points_list = [(left_eye[0], left_eye[1]),
(right_eye[0], right_eye[1]),
(nose[0], nose[1]),
(mouth_left[0], mouth_left[1]),
(mouth_right[0], mouth_right[1])]
for point in points_list:
cv2.circle(I, point, 1, (255, 0, 0), 4)
#保存
cv2.imwrite('result1.jpg',I,[int(cv2.IMWRITE_JPEG_QUALITY),70])