经常看到有代码中将数据集中人脸的关键点提取出来,并放在csv文件中,
csv中每行存放一张人脸的信息,格式为:
image_name,part_0_x,part_0_y,part_1_x,part_1_y,...,part_67_x,part_67_y
看到网上一个不错的实现方法,故记录一下。
首先是 create_csv.py
import dlib
import glob
import cv2
import csv
from skimage import io
import os
root_dir = '/remote-home/my/xxxxx'
detector = dlib.get_frontal_face_detector()
predictor = dlib.shape_predictor('shape_predictor_68_face_landmarks.dat')
num_landmarks = 68
with open('train_cords.csv', 'w', newline='') as csvfile:
csv_writer = csv.writer(csvfile)
header = ['image_name']
for i in range(num_landmarks):
header += ['part_{}_x'.format(i), 'part_{}_y'.format(i)]
csv_writer.writerow(header)
f = open('train_file.csv')
imgs = f.readlines()