好久前写的,不过很长时间内没空再弄了。
人脸库制作
首先从百度上找人脸图像,汇总,编号(其实也可以随意名直接保存, for file in os.listdir直接解决),结果如图。
之后用face_transfer.py进行图像变形,大小变成224×224结果如图。
import os
from PIL import Image
file_dir = '/home/emin/Temp/Tensorflow/data/face1'
file_rank = 1
for file in os.listdir(file_dir):
file_image = file_dir + '/' + str(file_rank) + '.jpg'
image = Image.open(file_image)
image = image.resize((224, 224))
image.save('/home/emin/Temp/Tensorflow/data/face2'+ '/' + str(file_rank) + '.jpg')
file_rank = file_rank + 1
由于我的python库出现了一些问题,我使用了matlab进行位置标注。
data=[];
for num=1:21
file_rank=num2str(num);
file = ['/home/emin/Temp/Tensorflow/data/face2/',file_rank,'.jpg'];
a=imread(file);
imshow(a);
[x1,y1]=ginput;
data(num,1)=x1(1);data(num,2)=y1(1);data(num,3)=x1(2);data(num,4)=y1(2);
line([data(num,1),data(num,1)],[data(num,2),data(num,4)]);
line([data(num,3),data(num,3)],[data(num,2),data(num,4)]);
line([data(num,1),data(num,3)],[data(num,2),data(num,2)]);
line([data(num,1),data(num,3)],[data(num,4),data(num,4)]);
pause(2)
end
作用是出图,鼠标取点,画出框,记录数据。数据我存在了face_data.csv里,数据为每行[x1,y1,x2,y2],即左上右下两点。
当时取点的情况大概这样。点两下,记录左上右下两点,之后自动画框,存数据,暂停2秒。
编写可以调用存储数据的csv文件的程序face_use_csv.py。
扫描二维码关注公众号,回复:
4978507 查看本文章
import csv
def get_row_data(num_row):
with open('/home/emin/Temp/Tensorflow/Me/face/face_data.csv','r') as csvfile:
reader = csv.reader(csvfile)
for i,rows in enumerate(reader):
if i == num_row:
row_data = rows
# print (row_data)
return(row_data)