0

ディレクトリ内の画像ファイルのリストの名前を変更してから、そのディレクトリに他の画像ファイルを配置することについて、ご協力をお願いします。たとえば、次のように、画像のリストがあるディレクトリ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の2つのサブディレクトリに分割しました。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の残りの画像はそれに応じて名前が変更されます。Dir3のImage-002などでも同じことが起こります。

問題を明確に説明できなかった場合は、私に尋ねてください。どんな助けでも本当にありがたいです。MatlabまたはC++のサンプルコードは非常に役立ちます。

4

1 に答える 1

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また、文字列の書式設定も参照してください。

于 2013-03-05T06:31:23.410 に答える