|
|
(2 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>
| |
| | |
| {{ITKCMakeLists|ReadUnknownImageType}}
| |