本次笔记的目的在于针对于将一堆排序的图像按照需要分成多个小文件夹保存,并且保存在小文件夹内的时候还需要修改保存时的图像名字。
MATLAB
例如:下图表示我要进行操作和排序的图像序列。
我想要把其中的没两张连续的图像保存在另外一个子文件夹内,如把frame0178和frame0179放在另外一个子文件夹1内。把frame0179和frame0180放在另外一个子文件夹2内,以此类推。
则可以用以下代码操作:
mkdir(default_folder,num2str(i + n)) 表示在default文件夹内创建命名为i+n的文件夹
imread(strcat(left_images,image_name)); left_images表示文件夹的地址,image_name为图像的名字如frame0178.jpg
imwrite(image1,strcat(oriImg,'\','1.jpg')) oriImg表示要存储image1图像的地址,1.jpg表示以1.jpg的文件名保存起来image1图像。
特别要注意strcat(path,name)在使用的时候,
path表示一个地址如:D:\AF\AH\,若此时地址为D:\AF\AH,
则需要在地址后面添加一个\符号如strcat(oriImg,'\','1.jpg')。
clear all;clc;
left_images = 'D:\Microsoft internet download\left1\';
right_images = 'D:\Microsoft internet download\right1\';
default_folder = 'D:\Microsoft internet download\test\';%存放新的子文件夹的文件夹
n = 1;
img_path_list = dir(strcat(left_images,'*.jpg'));%获取该文件夹中所有jpg格式的图像
img_num = length(img_path_list);%获取图像总数量
for i = 0:img_num-1 %表示从0遍历到img_num,可创建第0到m个子文件夹,同时将left和right中第n到m的图像保存在这些文件夹内
mkdir(default_folder,num2str(i + n));%表示将该文件夹创建完毕,如创建了命名为1的文件夹。
%%将左目第一帧保存为1
image_name = img_path_list(i).name;% 获取图像对的第i个图像名
image1 = imread(strcat(left_images,image_name)); %从指定目录读入文件名为左目第一帧图像并保存到sace_path中命名为1
oriImg = strcat(default_folder,num2str(i + n)) ;%要保存的图像
imwrite(image1,strcat(oriImg,'\','1.jpg'))%以1.jpg的命名写入path中
% %左目第二帧保存为2
image_name = img_path_list(i+1).name;% 图像名
image1 = imread(strcat(left_images,image_name)); %从指定目录读入文件名为左目第一帧图像并保存到sace_path中命名为1
oriImg = strcat(default_folder,num2str(i + n)) ;
imwrite(image1,strcat(oriImg,'\','2.jpg'))%写入path中
%%将右目第一帧保存为3
image_name = img_path_list(i).name;% 图像名
image1 = imread(strcat(right_images,image_name)); %从指定目录读入文件名为左目第一帧图像并保存到sace_path中命名为1
oriImg = strcat(default_folder,num2str(i + n)) ;
imwrite(image1,strcat(oriImg,'\','3.jpg'))%写入path中
% %右目第二帧保存为4
image_name = img_path_list(i+1).name;% 图像名
image1 = imread(strcat(right_images,image_name)); %从指定目录读入文件名为左目第一帧图像并保存到sace_path中命名为1
oriImg = strcat(default_folder,num2str(i + n)) ;
imwrite(image1,strcat(oriImg,'\','4.jpg'))%写入path中
end
Python
另存为图像的时候:
#另保存文件如depth文件到txt文件,再从txt保存到npy格式
dataset_seq_id = "D:\Carla_RS_dataset\Carla_town05"
frame_id = 4
os.rename(dataset_seq_id + '/' + 'RS_'+str(frame_id) + '.depth', dataset_seq_id + '/' + 'rs_depth.txt')
# 保存'RS_'+str(frame_id) + '.depth'深度图为'rs_depth.txt'文件
#保存txt文件深度图为npy格式
filename1 = dataset_seq_id + '/' + 'rs_depth.txt'
depth_map = np.loadtxt(filename1)
depth_map = depth_map.reshape(RESOLUTION_H,RESOLUTION_W)
depth_map = depth_map.astype(np.float32)
depth_map[depth_map > 32.5] = 0
np.save(dataset_seq_id + '/' + str(frame_id).zfill(4) + '.npy', depth_map)
os.remove(filename1) #移除或者保存txt文件
将某一个未知的jpg图像保存为png格式图像:
L_path = dataset_seq_id + '/' + 'RS_'+str(frame_id)+'.png'
//此时 L_path 指向的就是'RS_'+str(frame_id)+'.png'
L_image=Image.open(L_path)
out = L_image.convert("RGB")
out.save(dataset_seq_id + '/' + str(frame_id).zfill(4) + '.jpg')
os.remove(L_path)
创建文件夹:
DATASET_FOLDER = "D:\Carla_RS_dataset\Carla_town05"
//检查是否有该文件夹,没有就创建。
if not os.path.exists(DATASET_FOLDER):
os.makedirs(DATASET_FOLDER)
//检查该文件内是否有tmp子文件夹,没有就创建
if not os.path.exists(os.path.join(DATASET_FOLDER, 'tmp')):
os.makedirs(os.path.join(DATASET_FOLDER, 'tmp'))
//先给出一个新的文件夹的路径(此时可给该文件夹起名字),然后检查是否存在,不存在就创建:
dataset_seq_id = os.path.join(DATASET_FOLDER, 'carla_train_' + str(seq_id).zfill(5))
if not os.path.exists(dataset_seq_id):
os.makedirs(dataset_seq_id)
//像txt文件夹,如果没有创建也可以用下面方式直接创建并且打开,可编辑。
fidd = open(os.path.join(DATASET_FOLDER, 'names.txt'), 'a')