matplotlib 和 PIL 两个库可以对图片操作,包括读取转换显示保存图片
http://www.cnblogs.com/yinxiangnan-charles/p/5928689.html
使用skimage中的io模块对图片进行输入输出操作
http://www.cnblogs.com/denny402/p/5121897.html
对图片进行批处理,包括批量读取,保存,处理图片
http://www.cnblogs.com/denny402/p/5123772.html
对图片文件操作,包括提取文件夹下的所有图片,及切分名称和后缀
http://www.codexiu.cn/python/blog/155/
在caffe中为数据集打上标签
import os
from PIL import Image
import random
image_root = '/home/ubuntu1404/caffe/data/CUHK01/campus/'
train_root = '/home/ubuntu1404/caffe/data/CUHK01/train/'
test_root = '/home/ubuntu1404/caffe/data/CUHK01/test/'
label_root = '/home/ubuntu1404/caffe/examples/person_re/'
dirs = os.listdir(image_root) #读取image_root路径下的所有图片
#将文件按文件名从小到大排序,-4的意思后缀往前移4位,只按名称顺序
dirs = sorted(dirs, key = lambda x:int(x[:-4]))
n = 4 #每个人4张图片
num = len(dirs) #数据集总共的图片数量
num_class = num/4 #共有num_class类
#将数据集分成测试集和验证集并打上标签
for i in range(num_class):
lists = dirs[n*i:n*(i+1)]
random.shuffle(lists)
for train_data in lists[:-1]: #测试集,随机取3张
image = train_data.split('.')
new_name = str(int(image[0]))+'.'+image[1]
label = int(image[0])/1000
train_txt = open(label_root+'train.txt','a')
content = 'train/'+new_name+' '+str(label)+'\n'
train_txt.write(content)
train_txt.close()
img = Image.open(image_root+'/'+train_data)
img.save(train_root+'/'+new_name) #图片保存到不同路径
for test_data in lists[-1:]: #验证集,剩下一张
image = test_data.split('.')
new_name = str(int(image[0]))+'.'+image[1]
label = int(image[0])/1000
test_txt = open(label_root+'test.txt','a')
content = 'test/'+new_name+' '+str(label)+'\n'
test_txt.write(content)
test_txt.close()
img = Image.open(image_root+'/'+test_data)
img.save(test_root+'/'+new_name)
生成的结果如下图