我想请求您帮助重命名目录中的图像文件列表,然后将一些其他图像文件放在该目录中。例如,我有目录Dir1,其中有一个图像列表,如下所示:
Dir1 = [Image-001.jpg, Image-002.jpg, Image-003.jpg,...
Image-004.jpg, Image-005.jpg, Image-006.jpg,...
Image-007.jpg, Image-008.jpg, Image-009.jpg,...
Image-010.jpg, Image-011.jpg, Image-012.jpg];
我将图像列表分为两个子目录,即Dir2和Dir3。 Dir3包含Dir1的每第3个图像;和Dir2包含其余图像。
Dir2 = [Image-001.jpg, Image-002.jpg, Image-004.jpg,...
Image-005.jpg, Image-007.jpg, Image-008.jpg,...
Image-010.jpg, Image-011.jpg];
Dir3 = [Image-003.jpg, Image-006.jpg, Image-009.jpg, Image-012.jpg];
现在,在对Dir2和Dir3的图像进行一些处理之后,Dir2和Dir3的文件名变为:
Dir2 = [Image-001.jpg, Image-002.jpg, Image-003.jpg,...
Image-004.jpg, Image-005.jpg, Image-006.jpg,...
Image-007.jpg, Image-008.jpg];
Dir3 = [Image-001.jpg, Image-002.jpg, Image-003.jpg,...
Image-004.jpg];
任何人都可以告诉我如何合并Dir2和Dir3的文件并返回到Dir1的文件名模式;也就是说,我必须将Dir3的Image-001.jpg重命名为Image-003.jpg并将其放在Image-003.jpg所在的Dir2的第3个位置;和Image-003.jpg以及Dir2中的其他图像将相应地重命名。 Image-002也适用于Dir3等等。
请问我是否无法清楚地解释问题。任何帮助将非常感激。 Matlab或C ++中的任何示例代码都将是一个很好的帮助。
答案 0 :(得分:4)
您应该使用movefile
和copyfile
来完成这项工作。
例如,在Dir3上你可以做到
for ii=1:4,
dir3filename = fullfile( 'Dir3', sprintf('Image-%03d.jpg', ii ) );
dir1filename = fullfile( 'Dir1', sprintf('Image-%03d.jpg', 3*ii) ); % new name
copyfile( dir3filename, dir1filename );
end
请注意dir3filename
和dir1filename
是相对路径,只有当相对路径相对于当前工作目录正确时,代码才有效。您可以更改代码以使用绝对路径。
您可能还想查看fullfile
和string formatting。