ITK/Examples/IO/ReadUnknownImageType: Difference between revisions

From KitwarePublic
< ITK‎ | Examples
Jump to navigationJump to search
(Deprecated content that is moved to sphinx)
 
(3 intermediate revisions by 2 users not shown)
Line 1: Line 1:
==ReadUnknownImageType.cxx==
{{warning|1=The media wiki content on this page is no longer maintained.  The examples presented on the https://itk.org/Wiki/*  pages likely require ITK version 4.13 or earlier releases.   In many cases, the examples on this page no longer conform to the best practices for modern ITK versions.
<source lang="cpp">
}}
#include "itkImage.h"
#include "itkImageFileReader.h"


template<typename TImageType>
[https://itk.org/ITKExamples[ITK Sphinx Examples]]
static 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);
 
  imageIO->SetFileName(inputFilename);
  imageIO->ReadImageInformation();
  const ScalarPixelType pixelType = imageIO->GetComponentType();
  std::cout << "Pixel Type is " << imageIO->GetComponentTypeAsString(pixelType) // 'double'
            << std::endl;
  const size_t numDimensions =  imageIO->GetNumberOfDimensions();
  std::cout << "numDimensions: " << numDimensions << std::endl; // '2'
 
  std::cout << "component size: " << imageIO->GetComponentSize() << std::endl; // '8'
  std::cout << "pixel type (string): " << imageIO->GetPixelTypeAsString(imageIO->GetPixelType()) << std::endl; // 'vector'
  std::cout << "pixel type: " << imageIO->GetPixelType() << std::endl; // '5'
 
  /*
  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">
#include "itkImage.h"
#include "itkImageFileWriter.h"
#include <itkCovariantVector.h>
 
#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 ${ITK_LIBRARIES} )
 
ADD_EXECUTABLE(CreateImages CreateImages.cxx)
TARGET_LINK_LIBRARIES(CreateImages ${ITK_LIBRARIES} )
</source>

Latest revision as of 21:49, 30 May 2019

Warning: The media wiki content on this page is no longer maintained. The examples presented on the https://itk.org/Wiki/* pages likely require ITK version 4.13 or earlier releases. In many cases, the examples on this page no longer conform to the best practices for modern ITK versions.

[ITK Sphinx Examples]