3

インターネット サイトから 10,000 個の画像ファイルを読み込み、プロジェクト (画像検索システム) で使用するためにフォルダーに保存します。次に、画像ファイルの名前を (image1、image2、image3、.... image10000) 、誰でも私を助けることができます...仕事でmatlabを使用したことをお知らせしたいと思います

感謝

4

4 に答える 4

14

ディレクトリ内のファイルの順序に影響を与える場合があるため、ファイル名の数字部分の形式が正確にどのように表示されるかを覚えておく必要があります。たとえば、上記の命名規則を使用すると、次のような並べ替え順序になることがあります。

image1.jpg
image10.jpg
image11.jpg
image2.jpg
image3.jpg
...

これは通常、あなたが望むものではありません。代わりに、最大数値サイズ (この場合は 5 桁) まで数値をゼロで埋めると、ディレクトリでの並べ替え順序がより適切に維持されるはずです。

image00001.jpg
image00002.jpg
image00003.jpg
....

このようなファイル名を作成するには、SPRINTF関数を使用できます。この方法でディレクトリ内のすべての .jpg ファイルの名前を変更するサンプル コードを次に示します。

dirData = dir('*.jpg');         %# Get the selected file data
fileNames = {dirData.name};     %# Create a cell array of file names
for iFile = 1:numel(fileNames)  %# Loop over the file names
  newName = sprintf('image%05d.jpg',iFile);  %# Make the new name
  movefile(fileNames{iFile},newName);        %# Rename the file
end

上記のコードは、DIRおよびMOVEFILE関数も使用します (他の回答で述べたように)。

于 2010-01-05T05:32:05.640 に答える
2

matlab でファイルの名前を変更します。

movefile('myfile.m','myfile2.m')

フォルダー内のすべてのファイルを取得する必要がある場合は、次のようなものを試してください。

filelist = dir('*.jpg');
于 2010-01-05T04:52:37.077 に答える
1

1行短くなりました

datafiles = dir('*.jpeg');
for i = 1:length(datafiles)
    fileOut = strrep(datafiles(i).name, '0000.jpeg', '.jpeg');
    movefile(datafiles(i).name, fileOut);
end
于 2013-01-03T15:08:27.960 に答える
1

matlab の「movefile」関数 (最初のパラメーターはソース名、2 番目のパラメーターは宛先) を使用するか、最初にイメージを書き込むときに imwrite コマンドでファイル e を指定できます。

いずれにせよ、ダイレコリーのリストをループする必要があると思います。これは、「dir」または「ls」関数のいずれかで実行できます。

于 2010-01-05T04:55:19.237 に答える