在使用 dlib 检测面部标志后,有没有办法在面部选择特定点?

问题描述

我使用的是 Dlib 的 68 点人脸地标预测器,它有 68 个点被标记在下图所示的人脸的各个区域:

Shape predictor 68 face landmarks

我已经设法从预测的地标中访问特定点,例如,我可以通过以下方式选择位于唇角的点,这是面部地标预测器中的第 48 个点 ' 导入 cv2 导入数据库 从 google.colab.patches 导入 cv2_imshow

p = "path_to_shape_predictor_68_face_landmarks.dat"
img= cv2.imread('Obama.jpg')
gray=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
detector = dlib.get_frontal_face_detector()
predictor = dlib.shape_predictor(p)
face = detector(gray)
# Get the shape using the predictor
landmarks=predictor(gray,face)

# Defining x and y coordinates of a specific point
x=landmarks.part(48).x
y=landmarks.part(48).y
# Drawing a circle
cv2.circle(img,(x,y),6,(0,255),-1)
cv2_imshow(img)'

这会导致在指定区域上绘制一个红色小圆圈的图像。然而;如果我想选择一个不属于地标模型的 68 个点的点,我如何获得它?

这张图会详细说明:

Image

红色圆圈表示我使用代码访问过的点,蓝色圆圈表示所需的点。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)