matlab,python创建多文件读取保存图像

本次笔记的目的在于针对于将一堆排序的图像按照需要分成多个小文件夹保存,并且保存在小文件夹内的时候还需要修改保存时的图像名字。

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')
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值