一,将文件夹中的文件按照标签文件val.txt分类
一次性创建多个文件夹,文件夹名字从0到42 mkdir {0..42}
参考 https://blog.csdn.net/rongxue2001/article/details/76861704?locationNum=10&fps=1
https://blog.csdn.net/qq_21997625/article/details/80679692
Final-test中包含各类图片 1-test/10存放标签为10的图片
# -*- coding: UTF-8 -*-
from PIL import Image
f1 = open('val.txt','r')
for line in f1.readlines():
line = line.strip('\n')
c_array=line.split(" ")
#print(c_array[0])00027.jpg
#print(c_array[1]) 图片类别 10
if (c_array[1])=='10\r':
#print('tru')
#f2.write(c_array[0])
#print(c_array[0])
line3=line[0:5]#提取前5,图片名称
#print(line3)
im = Image.open('/home/xj/桌面/课题/所有代码/所有代码/Final-test/{}.jpg'.format(line3))
im.save('/home/xj/桌面/课题/所有代码/所有代码/1-test/10/{}.jpg'.format(line3))
#f2.write(line) # 把查找到的行写入f2.
f1.close()
二,GTSRB数据集ROI感兴趣区域提取,根据csv表格中坐标
# -*- coding: utf-8 -*-
import os
import numpy as np
import PIL
import matplotlib.pyplot as plt
import pandas as pd
def convert_train_data(file_dir):
root_dir = '/home/xj/桌面/课题/所有代码/所有代码/GTSRB/Final-' # 001', '00002', '00003', '00004', '00005', '00006',
directories = [file for file in os.listdir(file_dir) if os.path.isdir(os.path.join(file_dir, file))]
for files in directories:
path = os.path.join(root_dir,files)
if not os.path.exists(path):
os.makedirs(path)
data_dir = os.path.join(file_dir, files)
file_names = [os.path.join(data_dir, f) for f in os.listdir(data_dir) if f.endswith(".ppm")]
for f in os.listdir(data_dir):
if f.endswith(".csv"):
csv_dir = os.path.join(data_dir, f)
csv_data = pd.read_csv(csv_dir)
csv_data_array = np.array(csv_data)
for i in range(csv_data_array.shape[0]):
csv_data_list = np.array(csv_data)[i,:].tolist()[0].split(";")
sample_dir = os.path.join(data_dir, csv_data_list[0])
img = PIL.Image.open(sample_dir)
box = (int(csv_data_list[3]), int(csv_data_list[4]), int(csv_data_list[5]), int(csv_data_list[6]))
roi_img = img.crop(box)
new_dir = os.path.join(path, csv_data_list[0].split(".")[0] + ".jpg")
roi_img.save(new_dir, 'JPEG')
def convert_test_data(file_dir):
root_dir = '/home/xj/桌面/课题/所有代码/所有代码/GTSRB (3)/Final-test'
for f in os.listdir(file_dir):
if f.endswith(".csv"):
csv_dir = os.path.join(file_dir, f)
csv_data = pd.read_csv(csv_dir)
csv_data_array = np.array(csv_data)
for i in range(csv_data_array.shape[0]):
csv_data_list = np.array(csv_data)[i, :].tolist()[0].split(";")
sample_dir = os.path.join(file_dir, csv_data_list[0])
img = PIL.Image.open(sample_dir)
box = (int(csv_data_list[3]), int(csv_data_list[4]), int(csv_data_list[5]), int(csv_data_list[6]))
roi_img = img.crop(box)
new_dir = os.path.join(root_dir, csv_data_list[0].split(".")[0] + ".jpg")
roi_img.save(new_dir, 'JPEG')
if __name__ == "__main__":
train_data_dir = '/home/xj/桌面/课题/所有代码/所有代码/GTSRB/Final_Training/Images'
test_data_dir = '/home/xj/桌面/课题/所有代码/所有代码/GTSRB (3)/Final_Test/Images'
convert_train_data(train_data_dir)
convert_test_data(test_data_dir)
三 批量修改图像大小RGB-》批量灰度化且统一尺寸 ---https://blog.csdn.net/xxty1122/article/details/79406587
# -*- coding: utf-8 -*-
from skimage import io,transform,color
import numpy as np
def convert_gray(f,**args):#图片处理与格式化的函数
rgb=io.imread(f) #读取图片
gray = color.rgb2gray(rgb) # 将彩色图片转换为灰度图片
dst = transform.resize(gray, (28, 28)) # 调整大小,图像分辨率为64*64
return dst
datapath='/home/xj/桌面/课题/所有代码/所有代码/1-test/0' #图片所在的路径
str=datapath+'/*.jpg' #识别.jpg的图像
coll = io.ImageCollection(str,load_func=convert_gray)#批处理
for i in range(len(coll)):
io.imsave('/home/xj/桌面/课题/所有代码/所有代码/1-test-huiduhua/0/' + np.str(i) + '.bmp', coll[i]) # 保存图片在d:/daate/date/
四、深度学习中构造自己的数据集
参考
https://blog.csdn.net/Euadvancer/article/details/53312239
znyp_format-master数据集制作