連番ファイル名を発生させる

  • こちらのitkの連番ファイル名発生クラスを使って
  • 「ファイルの前半」+「数字」+「ファイルの後半」という連番ファイル名を書き出してみる
  • /home/ryamada/ITK-buildに ITKが入っているものとして
  • /home/ryamada/ITK_Projects_RY/Example_Utilities/src/ に、
    • NumericSeriesFile_RY.cxxというファイルを以下のように作り
#include "itkNumericSeriesFileNames.h"
 
int main(int argc, char *argv[] )
{
  itk::NumericSeriesFileNames::Pointer numericSeriesFileNames = itk::NumericSeriesFileNames::New();
  numericSeriesFileNames->SetStartIndex(atoi( argv[2] ) );
  numericSeriesFileNames->SetEndIndex(atoi( argv[3] ) );
  numericSeriesFileNames->SetIncrementIndex(1);
  numericSeriesFileNames->SetSeriesFormat(argv[1]);
 
  std::vector< std::string > fileNames = numericSeriesFileNames->GetFileNames();
 
  for(unsigned int i = 0; i < fileNames.size(); ++i)
    {
    std::cout << fileNames[i] << std::endl;
    }
 
  return EXIT_SUCCESS;
}
    • CMakeLists.txtを、以下のように創る
cmake_minimum_required(VERSION 2.8)
 
project(NumericSeriesFileNames)
 
find_package(ITK REQUIRED)
include(${ITK_USE_FILE})
if (ITKVtkGlue_LOADED)
  find_package(VTK REQUIRED)
  include(${VTK_USE_FILE})
endif()
 
add_executable(NumericSeriesFileNames_RY MACOSX_BUNDLE NumericSeriesFileNames_RY.cxx)
 
if( "${ITK_VERSION_MAJOR}" LESS 4 )
  target_link_libraries(NumericSeriesFileNames_RY ITKReview ${ITK_LIBRARIES})
else( "${ITK_VERSION_MAJOR}" LESS 4 )
  target_link_libraries(NumericSeriesFileNames_RY ${ITK_LIBRARIES})
endif( "${ITK_VERSION_MAJOR}" LESS 4 )
  • その上で/home/ryamada/ITK_Projects_RY/NumericSeriesFile_RY/以下に、srcというディレクトリと buildディレクトリを作り、上記の2ファイルをsrc/下に入れ、build/ディレクトリの中から
$ ccmake ../src
  • とすれば、ITKを置き場と訊かれるので、それを与えてconfigure → generate、とし、その結果としてできるMakefileに対して、makeすると、実行可能ファイルNumericSeriesFileNames_RY ができるので
./NumericSeriesFileNames_RY hoge_%d.tif 3 12
  • として実行すれば、以下ののように連番ファイル名ができる
[ryamada@Linux2 build]$ ./NumericSeriesFileNames_RY hoge_%d.tif 3 12
hoge_3.tif
hoge_4.tif
hoge_5.tif
hoge_6.tif
hoge_7.tif
hoge_8.tif
hoge_9.tif
hoge_10.tif
hoge_11.tif
hoge_12.tif