1.数据处理
将用于PFLD的数据集处理成只有嘴巴包围盒+标注的数据集
首先通过matplotlib库函数画出所有的标记,在通过删减点的个数来确定关键点标记在嘴巴的位置
例如使用IBUG人脸标记数据集做测试,每张图片有106个标记点位置,其中第84-104 有20个标记点是嘴巴
# 将数据集处理成嘴巴标记和嘴巴包围盒的数据
import cv2
import os
import matplotlib
#将人脸图片画上标记输出展示效果
picture_set = []
#读取原图片目录
picture_path = "./traindata/IBUG/picture" #原图片目录
for item in os.listdir(picture_path):
if ('jpg' not in item):
continue
picture_set.append(os.path.join(picture_path, item))
save_path = "./output_landmark" #输出图像目录
if not os.path.exists(save_path):
os.makedirs(save_path)
image = cv2.imread(picture_set[0])
land_path = "./traindata/IBUG/landmark"
land_path = os.path.join(land_path, (picture_set[0] + ".txt").split("/")[-1])
print(land_path)
count = 0
# 33 个面部轮廓点 < 35
# 最后两个关键点是眼睛的中心 106 107 去掉
# 85 -105 行 是嘴巴关键点的标注
with open(land_path) as read_file:
for line in read_file:
count = count + 1
if(count < 85) :continue
pos = line.split()
x=int(float(pos[0])*1000000)
y=int(float(pos[1])*1000000)
x1=int(float(pos[0]))
x2=int(float(pos[1]))
#画出标记
print(count)
cv2.circle(