Matlab处理顺序编号图像

时间:2016-02-08 19:18:08

标签: matlab

我有近1000张图片    img0.png,img1.png,img3.png,...,img1000.png。    我正在使用MatLab,我的代码如下:

SendMessage, 0x7, 0, 0, Edit3, A  ; WM_SETFOCUS = 0x07

所以 imageNames 结构包含如下

img0.png

img1.png

img10.png

img100.png    .......

但我想要

img0.png

img1.png

img2.png    .......

这可以在MatLab中以编程方式进行吗?

此致

1 个答案:

答案 0 :(得分:1)

如果您正在尝试转换文章名,就像您在评论中所说的那样。您可以使用regexprep获取与旧文件名对应的新文件名列表。

newnames = regexprep({imageNames.name},'(img)(\d*)(\.png)','$1${sprintf(''%04d'', $2)}$3')

基本上,这会拉出每个文件名的数字部分,然后通过sprintf运行它,按照你的建议零填充它(4位零填充)。

如果您想使用这些新名称重新保存图像,只需循环即可。

for k = 1:numel(imageNames);
    movefile(imageNames(k).name, newnames{k});
end

如果需要,您还可以对newnames变量进行排序,它现在会自然排序。

[values, sortinds] = sort(newnames);
sortedNames = imageNames(sortinds);