ITK/Examples/IO/ReadUnknownImageType: Difference between revisions

From KitwarePublic
< ITK‎ | Examples
Jump to navigationJump to search
mNo edit summary
No edit summary
Line 1: Line 1:
Update: first error was taken care of by adding ::Pointer to the argument list of the explicit instantiations.
==ReadUnknownImageType.cxx==
<source lang="cpp">
#include "itkImage.h"
#include "itkImageFileReader.h"
 
template<typename TImageType>
void ReadFile(std::string filename, typename TImageType::Pointer image);
 
int main(int argc, char *argv[])
{
  if(argc < 2)
    {
    std::cerr << "Required: filename" << std::endl;
 
    return EXIT_FAILURE;
    }
  std::string inputFilename = argv[1];
 
  typedef itk::ImageIOBase::IOComponentType ScalarPixelType;
 
  itk::ImageIOBase::Pointer imageIO =
        itk::ImageIOFactory::CreateImageIO(
            inputFilename.c_str(), itk::ImageIOFactory::ReadMode);
 
  // Now that we found the appropriate ImageIO class, ask it to
  // read the meta data from the image file.


14: error: no matching function for call to ‘WriteFile(itk::SmartPointer<itk::Image<itk::CovariantVector<double, 4u>, 2u> >&, std::string)
  imageIO->SetFileName(inputFilename);
  imageIO->ReadImageInformation();
  const ScalarPixelType pixelType = imageIO->GetComponentType();
  std::cout << "Pixel Type is " << imageIO->GetComponentTypeAsString(pixelType)
            << std::endl;
  const size_t numDimensions =  imageIO->GetNumberOfDimensions();
  std::cout << "numDimensions: " << numDimensions << std::endl;
 
  /*
  switch (pixelType)
  {
    case itk::ImageIOBase::COVARIANTVECTOR:
      typedef itk::Image<unsigned char, 2> ImageType;
      ImageType::Pointer image = ImageType::New();
      ReadFile<ImageType>(inputFilename, image);
      break;
   
      typedef itk::Image<unsigned char, 2> ImageType;
      ImageType::Pointer image = ImageType::New();
      ReadFile<ImageType>(inputFilename, image);
      break;
 
    default:
      std::cerr << "Pixel Type ("
                << imageIO->GetComponentTypeAsString(pixelType)
                << ") not supported. Exiting." << std::endl;
      return -1;
  }
  */
 
  return EXIT_SUCCESS;
}
 
template<typename TImageType>
void ReadFile(std::string filename, typename TImageType::Pointer image)
{
  typedef itk::ImageFileReader<TImageType> ReaderType;
  typename ReaderType::Pointer reader = ReaderType::New();
 
  reader->SetFileName(filename);
  reader->Update();
 
  image->Graft(reader->GetOutput());
}
</source>


==CreateImages.cxx==
==CreateImages.cxx==
Line 18: Line 87:
   typedef itk::Image< itk::CovariantVector<double, 4> , 2>  ImageType4;
   typedef itk::Image< itk::CovariantVector<double, 4> , 2>  ImageType4;
   ImageType4::Pointer image4 = ImageType4::New();
   ImageType4::Pointer image4 = ImageType4::New();
   WriteFile(image4, std::string("image4.mhd"));
   WriteFile<ImageType4>(image4, std::string("image4.mhd"));


   typedef itk::Image< itk::CovariantVector<double, 5> , 2>  ImageType5;
   typedef itk::Image< itk::CovariantVector<double, 5> , 2>  ImageType5;
   ImageType5::Pointer image5 = ImageType5::New();
   ImageType5::Pointer image5 = ImageType5::New();
   WriteFile(image5, std::string("image5.mhd"));
   WriteFile<ImageType5>(image5, std::string("image5.mhd"));


   return EXIT_SUCCESS;
   return EXIT_SUCCESS;
Line 45: Line 114:
   image->SetRegions(region);
   image->SetRegions(region);
   image->Allocate();
   image->Allocate();
   /*
    
   typedef itk::ImageFileReader<TImageType> ReaderType;
   typedef typename itk::ImageFileWriter<TImageType> WriterType;
   typename ReaderType::Pointer reader = ReaderType::New();
   typename WriterType::Pointer writer = WriterType::New();
   reader->SetInput(image);
   writer->SetInput(image);
   reader->SetFileName(filename);
   writer->SetFileName(filename);
   reader->Update();
   writer->Update();
   */
    
}
}


Line 67: Line 136:
FIND_PACKAGE(ITK REQUIRED)
FIND_PACKAGE(ITK REQUIRED)
INCLUDE(${ITK_USE_FILE})
INCLUDE(${ITK_USE_FILE})
ADD_EXECUTABLE(ReadUnknownImageType ReadUnknownImageType.cxx)
TARGET_LINK_LIBRARIES(ReadUnknownImageType ITKIO ITKBasicFilters ITKCommon )


ADD_EXECUTABLE(CreateImages CreateImages.cxx)
ADD_EXECUTABLE(CreateImages CreateImages.cxx)
TARGET_LINK_LIBRARIES(CreateImages ITKIO ITKBasicFilters ITKCommon )
TARGET_LINK_LIBRARIES(CreateImages ITKIO ITKBasicFilters ITKCommon )
</source>
</source>

Revision as of 15:56, 1 December 2010

ReadUnknownImageType.cxx

<source lang="cpp">

  1. include "itkImage.h"
  2. include "itkImageFileReader.h"

template<typename TImageType> void ReadFile(std::string filename, typename TImageType::Pointer image);

int main(int argc, char *argv[]) {

 if(argc < 2)
   {
   std::cerr << "Required: filename" << std::endl;
   return EXIT_FAILURE;
   }
 std::string inputFilename = argv[1];
 typedef itk::ImageIOBase::IOComponentType ScalarPixelType;
 itk::ImageIOBase::Pointer imageIO =
       itk::ImageIOFactory::CreateImageIO(
           inputFilename.c_str(), itk::ImageIOFactory::ReadMode);
 // Now that we found the appropriate ImageIO class, ask it to
 // read the meta data from the image file.
 imageIO->SetFileName(inputFilename);
 imageIO->ReadImageInformation();
 const ScalarPixelType pixelType = imageIO->GetComponentType();
 std::cout << "Pixel Type is " << imageIO->GetComponentTypeAsString(pixelType)
           << std::endl;
 const size_t numDimensions =  imageIO->GetNumberOfDimensions();
 std::cout << "numDimensions: " << numDimensions << std::endl;
 /*
 switch (pixelType)
 {
   case itk::ImageIOBase::COVARIANTVECTOR:
     typedef itk::Image<unsigned char, 2> ImageType;
     ImageType::Pointer image = ImageType::New();
     ReadFile<ImageType>(inputFilename, image);
     break;
   
     typedef itk::Image<unsigned char, 2> ImageType;
     ImageType::Pointer image = ImageType::New();
     ReadFile<ImageType>(inputFilename, image);
     break;
   default:
     std::cerr << "Pixel Type ("
               << imageIO->GetComponentTypeAsString(pixelType)
               << ") not supported. Exiting." << std::endl;
     return -1;
 }
 */
 return EXIT_SUCCESS;

}

template<typename TImageType> void ReadFile(std::string filename, typename TImageType::Pointer image) {

 typedef itk::ImageFileReader<TImageType> ReaderType;
 typename ReaderType::Pointer reader = ReaderType::New();
 reader->SetFileName(filename);
 reader->Update();
 image->Graft(reader->GetOutput());

} </source>

CreateImages.cxx

<source lang="cpp">

  1. include "itkImage.h"
  2. include "itkImageFileWriter.h"
  3. include <itkCovariantVector.h>
  1. include <string>

template<typename TImageType> void WriteFile(typename TImageType::Pointer image, std::string filename);

int main(int, char *[]) {

 typedef itk::Image< itk::CovariantVector<double, 4> , 2>  ImageType4;
 ImageType4::Pointer image4 = ImageType4::New();
 WriteFile<ImageType4>(image4, std::string("image4.mhd"));
 typedef itk::Image< itk::CovariantVector<double, 5> , 2>  ImageType5;
 ImageType5::Pointer image5 = ImageType5::New();
 WriteFile<ImageType5>(image5, std::string("image5.mhd"));
 return EXIT_SUCCESS;

}

template<typename TImageType> void WriteFile(typename TImageType::Pointer image, std::string filename) {

 // Create image
 typename TImageType::IndexType start;
 start[0] = 0;
 start[1] = 0;
 typename TImageType::SizeType size;
 size[0] = 20;
 size[1] = 30;
 typename TImageType::RegionType region;
 region.SetSize(size);
 region.SetIndex(start);
 image->SetRegions(region);
 image->Allocate();
 
 typedef typename itk::ImageFileWriter<TImageType> WriterType;
 typename WriterType::Pointer writer = WriterType::New();
 writer->SetInput(image);
 writer->SetFileName(filename);
 writer->Update();
 

}

template void WriteFile<itk::Image< itk::CovariantVector<double, 4> , 2> >(itk::Image< itk::CovariantVector<double, 4> , 2>::Pointer, std::string); template void WriteFile<itk::Image< itk::CovariantVector<double, 5> , 2> >(itk::Image< itk::CovariantVector<double, 5> , 2>::Pointer, std::string); </source>

CMakeLists.txt

<source lang="cmake"> cmake_minimum_required(VERSION 2.6)

PROJECT(CreateImages)

FIND_PACKAGE(ITK REQUIRED) INCLUDE(${ITK_USE_FILE})

ADD_EXECUTABLE(ReadUnknownImageType ReadUnknownImageType.cxx) TARGET_LINK_LIBRARIES(ReadUnknownImageType ITKIO ITKBasicFilters ITKCommon )

ADD_EXECUTABLE(CreateImages CreateImages.cxx) TARGET_LINK_LIBRARIES(CreateImages ITKIO ITKBasicFilters ITKCommon ) </source>