MediaPipe - 02.人脸识别

本系列文章介绍各类图像识别的使用方法,运用这些技巧采集更多的原始数据,训练我们的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)

运行结果

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值