python+OpenCv+dlib实现人脸68个关键点检测

228 篇文章 25 订阅

 

pip install dlib==19.7.0

下载地址:

http://dlib.net/files/

dlib中为我们提供了关于人脸检测标注训练好的文件可在http://dlib.net/files/shape_predictor_68_face_landmarks.dat.bz2

这个是81的关键点:貌似不是很准,

https://github.com/codeniko/shape_predictor_81_face_landmarks

import sys
import os
import dlib
import glob
from skimage import io
import numpy as np
import cv2
import time


cap = cv2.VideoCapture(0)
# fourcc = cv2.VideoWriter_fourcc(*'XVID')

# out = cv2.VideoWriter('output.avi',fourcc, 20.0, (1280, 720))

predictor_path = 'shape_predictor_81_face_landmarks.dat'
predictor_path = 'shape_predictor_68_face_landmarks
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
以下是使用 Python + OpenCVdlib 包对一张图片中的人脸进行美白的代码: ```python import cv2 import dlib # 加载预训练的人脸检测器 detector = dlib.get_frontal_face_detector() # 加载预训练的人脸关键点检测器 predictor = dlib.shape_predictor('shape_predictor_68_face_landmarks.dat') # 定义美白函数 def skin_whitening(image, alpha): # 将图像转换为 LAB 颜色空间 lab_image = cv2.cvtColor(image, cv2.COLOR_BGR2LAB) # 分离 L, A, B 三个通道 l_channel, a_channel, b_channel = cv2.split(lab_image) # 对 L 通道进行直方图均衡化 l_channel = cv2.equalizeHist(l_channel) # 对 A, B 通道进行简单平均 a_channel = cv2.blur(a_channel, (3, 3)) b_channel = cv2.blur(b_channel, (3, 3)) # 合并三个通道 processed_image = cv2.merge((l_channel, a_channel, b_channel)) # 将图像转换回 RGB 颜色空间 processed_image = cv2.cvtColor(processed_image, cv2.COLOR_LAB2BGR) # 对原图像和处理后的图像进行混合 blended_image = cv2.addWeighted(image, alpha, processed_image, 1 - alpha, 0) return blended_image # 加载图像 image = cv2.imread('test.jpg') # 检测人脸 faces = detector(image, 1) # 对每个人脸进行美白处理 for face in faces: # 提取人脸区域 x1, y1, x2, y2 = face.left(), face.top(), face.right(), face.bottom() face_image = image[y1:y2, x1:x2] # 检测人脸关键 landmarks = predictor(image, face) # 获取左右眼和嘴巴的区域 left_eye_region = [(landmarks.part(36).x - x1, landmarks.part(36).y - y1), (landmarks.part(39).x - x1, landmarks.part(39).y - y1)] right_eye_region = [(landmarks.part(42).x - x1, landmarks.part(42).y - y1), (landmarks.part(45).x - x1, landmarks.part(45).y - y1)] mouth_region = [(landmarks.part(48).x - x1, landmarks.part(48).y - y1), (landmarks.part(54).x - x1, landmarks.part(54).y - y1)] # 对人脸区域进行美白处理 face_image = skin_whitening(face_image, 0.5) # 将处理后的人脸区域放回原图 image[y1:y2, x1:x2] = face_image # 显示处理后的图像 cv2.imshow('Skin Whitening', image) cv2.waitKey(0) cv2.destroyAllWindows() ``` 其中 `skin_whitening` 函数用于对单个人脸区域进行美白处理,`alpha` 参数控制美白程度,值越大美白程度越大。在主函数中,首先使用 dlib人脸检测器和人脸关键点检测器检测人脸人脸关键,然后对每个人脸区域调用 `skin_whitening` 函数进行美白处理,最后将处理后的人脸区域放回原图并显示。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

AI算法网奇

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值