本系列文章介绍各类图像识别的使用方法,运用这些技巧采集更多的原始数据,训练我们的AI模型。本系列文章要有Python和OpenCV基础。
人脸识别
MediaPipe的人脸识别功能是很强大的,除了一般人脸识别,还可以人脸三维重建。这节我们只介绍一般人脸识别。
MediaPipe的人脸识别会找出图片中人脸的6个关键点,2个眼睛,2个耳朵,鼻子和嘴巴。这些关键点将有助于我们对人脸进行下一步的操作。比如,加个眼镜等。
人脸识别程序
这个程序将从一张照片中识别出人脸,并把每个人脸在图片中的范围和6个关键点标注出来。mp.solutions.drawing_utils是MediaPipe内置的,强大的绘制工具。
import cv2
import mediapipe as mp
if __name__ == '__main__':
mp_face_detection = mp.solutions.face_detection
mp_drawing = mp.solutions.drawing_utils
with mp_face_detection.FaceDetection(min_detection_confidence=0.5) as face_detection:
img=cv2.imread("faces.png")
img = cv2.flip(img,1)
imgrgb = cv2.cvtColor(img,cv2.COLOR_BGR2RGB)
results = face_detection.process(imgrgb)
img1 = img.copy()
if results.detections:
for fid,detection in enumerate(results.detections):
box = detection.location_data.relative_bounding_box
ih,iw,ic = img.shape
bbox = [int(box.xmin*iw),int(box.ymin*ih),int(box.width*iw),int(box.height*ih)]
print(fid,bbox)
print("RIGHT_EYE:",mp_face_detection.get_key_point(detection,mp_face_detection.FaceKeyPoint.RIGHT_EYE))
print("LEFT_EYE:",mp_face_detection.get_key_point(detection,mp_face_detection.FaceKeyPoint.LEFT_EYE))
print("NOSE_TIP:",mp_face_detection.get_key_point(detection,mp_face_detection.FaceKeyPoint.NOSE_TIP))
print("MOUTH_CENTER:",mp_face_detection.get_key_point(detection,mp_face_detection.FaceKeyPoint.MOUTH_CENTER))
print("RIGHT_EAR_TRAGION:",mp_face_detection.get_key_point(detection,mp_face_detection.FaceKeyPoint.RIGHT_EAR_TRAGION))
print("LEFT_EAR_TRAGION:",mp_face_detection.get_key_point(detection,mp_face_detection.FaceKeyPoint.LEFT_EAR_TRAGION))
mp_drawing.draw_detection(img1,detection)
cv2.imshow('img',img1)