【发布时间】:2020-04-05 05:16:17
【问题描述】:
我正在尝试从一个文件夹中读取图像并将新图像以不同的名称保存在不同的文件夹中。我需要它们的名称不同,因为它们是用不同的 affine2d 值生成的。例如 a1 文件夹中的图像将是 aa1,aa2,aa3,aa4,aa5.... 而 a2 文件夹中的图像将是 bb1,bb2,bb3.... 有什么办法吗?
'''
srcFiles = dir('C:\Users\mstfy\Desktop\Matlab\alex\Train1\Person1\*.jpg');
for i = 1 : length(srcFiles)
filename = strcat('C:\Users\mstfy\Desktop\Matlab\alex\Train1\Person1\',srcFiles(i).name);
im = imread(filename);
aform = affine2d([1 0 0; .1 1 0; 0 0 1])
bform = affine2d([1 0 0; .2 1 0; 0 0 1])
cform = affine2d([1 0 0; .3 1 0; 0 0 1])
dform = affine2d([1 0 0; .4 1 0; 0 0 1])
eform = affine2d([1 0 0; .5 1 0; 0 0 1])
fform = affine2d([1 0 0; .6 1 0; 0 0 1])
gform = affine2d([1 0 0; .7 1 0; 0 0 1])
hform = affine2d([1 0 0; .8 1 0; 0 0 1])
jform = affine2d([1 0 0; .9 1 0; 0 0 1])
a = imwarp(im,aform);
b = imwarp(im,bform);
c = imwarp(im,cform);
d = imwarp(im,dform);
e = imwarp(im,eform);
f = imwarp(im,fform);
g = imwarp(im,gform);
h = imwarp(im,hform);
j = imwarp(im,jform);
newfilename=strcat('C:\Users\mstfy\Desktop\Matlab\alex\Train1\Person1\a1\',srcFiles(i).name);
newfilename1=strcat('C:\Users\mstfy\Desktop\Matlab\alex\Train1\Person1\a2\',srcFiles(i).name);
newfilename2=strcat('C:\Users\mstfy\Desktop\Matlab\alex\Train1\Person1\a3\',srcFiles(i).name);
newfilename3=strcat('C:\Users\mstfy\Desktop\Matlab\alex\Train1\Person1\a4\',srcFiles(i).name);
newfilename4=strcat('C:\Users\mstfy\Desktop\Matlab\alex\Train1\Person1\a5\',srcFiles(i).name);
newfilename5=strcat('C:\Users\mstfy\Desktop\Matlab\alex\Train1\Person1\a6\',srcFiles(i).name);
newfilename6=strcat('C:\Users\mstfy\Desktop\Matlab\alex\Train1\Person1\a7\',srcFiles(i).name);
newfilename7=strcat('C:\Users\mstfy\Desktop\Matlab\alex\Train1\Person1\a8\',srcFiles(i).name);
newfilename8=strcat('C:\Users\mstfy\Desktop\Matlab\alex\Train1\Person1\a9\',srcFiles(i).name);
imwrite(a,newfilename,'jpg');
imwrite(b,newfilename1,'jpg');
imwrite(c,newfilename2,'jpg');
imwrite(d,newfilename3,'jpg');
imwrite(e,newfilename4,'jpg');
imwrite(f,newfilename5,'jpg');
imwrite(g,newfilename6,'jpg');
imwrite(h,newfilename7,'jpg');
imwrite(j,newfilename8,'jpg');
end
'''
【问题讨论】:
-
这在我看来与 Python 无关。我可能弄错了,但是如果它们是独立的,那么尝试将所有图像同时加载到内存中似乎相当浪费 - 你肯定一次做一个更好吗?
-
对不起,这是matlab代码,我删除了python的标签
-
我只是想节省一些时间一起做所有这些,试图找出如何用不同的名称保存这些新创建的图像。因为我有 40 个不同的人,每个人至少有 300 张图像,所以最后当我把他们放在训练中时,他们都在同一个文件夹中,所以他们不能有相同的名字。到目前为止,我只是使用以下 python 代码为每个文件创建数据和更改名称。但我不想浪费时间这样做。
-
import os # 重命名多个文件的函数 def main(): i = 0 path="C:/Users/mstfy/Desktop/Matlab/alex/affine9/" for filename in os.listdir( path): my_dest ="p" + str(i) + ".jpg" my_source =path + filename my_dest =path + my_dest # rename() function will # rename all files os.rename(my_source, my_dest) i += 1 # 驱动代码 if name == 'main': # Calling main() function main()
-
请不要将代码放在未格式化且难以阅读的 cmets 中。通常最好编辑您的问题并确保它是最新且正确的。
标签: image matlab image-processing