第二弹 分类test和train
根据stanford数据集的1.6W张图片的txt文本分类test和train,原标签文件为mat格式,可自行搜索转换为txt文本。
import os
import shutil
import cv2
# 读入分类的标签txt文件
#label_file = open("E:\\pythonProject\\data\\train_perfect_preds.txt", 'r')
label_file = open("D:\\Desktop\\three_small\\Stanford-data\\mat2txt.txt", 'r')
# 原始文件的根目录
#input_path = "E:\\pythonProject\\data\\cars_train"
input_path = "D:\\Desktop\\three_small\\Stanford-data\\car_ims"
# 保存文件的根目录
#output_path = "E:\\pythonProject\\result"
output_path = "D:\\Desktop\\three_small\\Stanford-data"
# 标签数组
#lables = ["Classical", "Rock", "Symphony", "Country"]
paths = ['/fdfs_data/data/', '/fdfs_data/data1/']
trainpath = '/home/*/*/SR/raisr/test'
#file_name = "E:\pythonProject\sort\data\cars_train"
file_name = "D:\Desktop\\three_small\Stanford-data\car_ims" #\t 转义
def get_img_file(file_name):
imagelist = []
for parent, dirnames, filenames in os.walk(file_name):
for filename in filenames:
if filename.lower().endswith(
('.bmp', '.dib', '.png', '.jpg', '.jpeg', '.pbm', '.pgm', '.ppm', '.tif', '.tiff')):
imagelist.append(os.path.join(parent, filename))
#print(filename)
return imagelist
list = get_img_file(file_name) #图片的路径数组
#print(list)
#print(file_name)
# 一行行读入标签文件
data = label_file.readlines()
#data1 = pic_file.readlines()
# 计数用
i = 0
for line in data:
# 通过空格拆分成数组
str1 = line.split(" ")
print(str1)
# 第一个是文件名
#file_name = str1[0]
# 第二个是标签类别,并去除最后的换行字符
#file_label = str1[1].strip()
file_label = str1[2].strip() #第三个标识是标签
# 原始文件的路径
#str2=file_label.zfill(5)
#old_file_path = os.path.join(input_path, str2)
old_file_path = list[i]
# 新文件路径
new_file_path = ""
# 如果文件名中有test字符,将其保存至test文件夹下的对应标签文件夹中
#if "test" in file_name:
if str1[3] == '0\n': #分割后的字符包括换换行符
new_file_path = os.path.join(output_path, "car_ims_train", file_label)
#print(new_file_path + "\t进if了")
# 如果文件名中有 train 字符,将其保存至train文件夹下的对应标签文件夹中
#elif "train" in file_name:
#new_file_path = os.path.join(output_path, "train", lables[int(file_label) - 1])
elif str1[3] == '1\n':
new_file_path = os.path.join(output_path, "car_ims_test", file_label)
# 如果路径不存在,则创建
#print(new_file_path)
if not os.path.exists(new_file_path):
print("路径 " + new_file_path + " 不存在,正在创建......")
os.makedirs(new_file_path)
# 新文件位置
new_file_path = os.path.join(new_file_path, str(i))
img = cv2.imread(old_file_path)
sp = img.shape
height = sp[0]
width = sp[1]
channel = sp[2]
# 复制文件
#if height>400 and width >400:
print("" + str(i) + "\t正在将 " + old_file_path + " 复制到 " + new_file_path)
shutil.copyfile(old_file_path, new_file_path+'.jpg')
#else:
print(old_file_path,sp)
i = i + 1
# 完成提示
print("完成")