ITK/Examples/Broken/Images/VTKImageToImageFilter: Difference between revisions
From KitwarePublic
Jump to navigationJump to search
Daviddoria (talk | contribs) |
Daviddoria (talk | contribs) No edit summary |
||
Line 4: | Line 4: | ||
<source lang="cpp"> | <source lang="cpp"> | ||
#include <itkImage.h> | #include <itkImage.h> | ||
#include <itkVTKImageToImageFilter.h> | #include <itkVTKImageToImageFilter.h> | ||
#include "vtkSmartPointer.h" | #include "vtkSmartPointer.h" | ||
#include "vtkPNGReader.h" | #include "vtkPNGReader.h" | ||
#include <vtkImageLuminance.h> | |||
#include "QuickView.h" | |||
int main(int argc, char*argv[]) | int main(int argc, char*argv[]) | ||
Line 28: | Line 24: | ||
vtkSmartPointer<vtkPNGReader>::New(); | vtkSmartPointer<vtkPNGReader>::New(); | ||
reader->SetFileName(argv[1]); | reader->SetFileName(argv[1]); | ||
// reader->SetNumberOfScalarComponents(1); //doesn't seem to work - use ImageLuminance instead | |||
reader->Update(); | reader->Update(); | ||
// Must convert image to grayscale because itkVTKImageToImageFilter only accepts single channel images | |||
vtkSmartPointer<vtkImageLuminance> luminanceFilter = | |||
vtkSmartPointer<vtkImageLuminance>::New(); | |||
luminanceFilter->SetInputConnection(reader->GetOutputPort()); | |||
luminanceFilter->Update(); | |||
typedef itk::Image<unsigned char, 2> ImageType; | typedef itk::Image<unsigned char, 2> ImageType; | ||
typedef itk::VTKImageToImageFilter<ImageType> VTKImageToImageType; | typedef itk::VTKImageToImageFilter<ImageType> VTKImageToImageType; | ||
VTKImageToImageType::Pointer vtkImageToImageFilter = VTKImageToImageType::New(); | VTKImageToImageType::Pointer vtkImageToImageFilter = VTKImageToImageType::New(); | ||
vtkImageToImageFilter->SetInput(reader->GetOutput()); | vtkImageToImageFilter->SetInput(luminanceFilter->GetOutput()); | ||
//vtkImageToImageFilter->SetInput(reader->GetOutput()); | |||
vtkImageToImageFilter->Update(); | |||
ImageType::Pointer image = ImageType::New(); | |||
image->Graft(vtkImageToImageFilter->GetOutput()); // Need to do this because QuickView can't accept const | |||
QuickView viewer; | |||
viewer.AddImage(image.GetPointer()); // Need to do this because QuickView can't accept smart pointers | |||
viewer.Visualize(); | |||
return EXIT_SUCCESS; | return EXIT_SUCCESS; | ||
Line 75: | Line 59: | ||
PROJECT(VTKImageToImageFilter) | PROJECT(VTKImageToImageFilter) | ||
include_directories(/home/doriad/ITKWikiExamples/ItkVtkGlue) | |||
include_directories(/home/doriad/src/ITK/Wrapping/WrapITK/ExternalProjects/ItkVtkGlue/src/) | include_directories(/home/doriad/src/ITK/Wrapping/WrapITK/ExternalProjects/ItkVtkGlue/src/) | ||
FIND_PACKAGE(VTK REQUIRED) | FIND_PACKAGE(VTK REQUIRED) | ||
Line 83: | Line 70: | ||
INCLUDE(${ITK_USE_FILE}) | INCLUDE(${ITK_USE_FILE}) | ||
ADD_EXECUTABLE(VTKImageToImageFilter VTKImageToImageFilter.cxx) | ADD_EXECUTABLE(VTKImageToImageFilter VTKImageToImageFilter.cxx /home/doriad/ITKWikiExamples/ItkVtkGlue/QuickView.cxx) | ||
TARGET_LINK_LIBRARIES(VTKImageToImageFilter | TARGET_LINK_LIBRARIES(VTKImageToImageFilter | ||
vtkHybrid | vtkHybrid |
Revision as of 12:33, 29 January 2011
Seems to expect an input image with only 1 component? (i.e. greyscale)
VTKImageToImageFilter.cxx
<source lang="cpp">
- include <itkImage.h>
- include <itkVTKImageToImageFilter.h>
- include "vtkSmartPointer.h"
- include "vtkPNGReader.h"
- include <vtkImageLuminance.h>
- include "QuickView.h"
int main(int argc, char*argv[]) {
if(argc < 2) { std::cerr << "Required: filename" << std::endl; return EXIT_FAILURE; }
vtkSmartPointer<vtkPNGReader> reader = vtkSmartPointer<vtkPNGReader>::New(); reader->SetFileName(argv[1]); // reader->SetNumberOfScalarComponents(1); //doesn't seem to work - use ImageLuminance instead reader->Update();
// Must convert image to grayscale because itkVTKImageToImageFilter only accepts single channel images vtkSmartPointer<vtkImageLuminance> luminanceFilter = vtkSmartPointer<vtkImageLuminance>::New(); luminanceFilter->SetInputConnection(reader->GetOutputPort()); luminanceFilter->Update(); typedef itk::Image<unsigned char, 2> ImageType;
typedef itk::VTKImageToImageFilter<ImageType> VTKImageToImageType;
VTKImageToImageType::Pointer vtkImageToImageFilter = VTKImageToImageType::New(); vtkImageToImageFilter->SetInput(luminanceFilter->GetOutput()); //vtkImageToImageFilter->SetInput(reader->GetOutput()); vtkImageToImageFilter->Update();
ImageType::Pointer image = ImageType::New(); image->Graft(vtkImageToImageFilter->GetOutput()); // Need to do this because QuickView can't accept const QuickView viewer; viewer.AddImage(image.GetPointer()); // Need to do this because QuickView can't accept smart pointers viewer.Visualize();
return EXIT_SUCCESS;
} </source>
CMakeLists.txt
<source lang="cmake"> cmake_minimum_required(VERSION 2.6)
PROJECT(VTKImageToImageFilter)
include_directories(/home/doriad/ITKWikiExamples/ItkVtkGlue) include_directories(/home/doriad/src/ITK/Wrapping/WrapITK/ExternalProjects/ItkVtkGlue/src/)
FIND_PACKAGE(VTK REQUIRED)
INCLUDE(${VTK_USE_FILE})
FIND_PACKAGE(ITK REQUIRED) INCLUDE(${ITK_USE_FILE})
ADD_EXECUTABLE(VTKImageToImageFilter VTKImageToImageFilter.cxx /home/doriad/ITKWikiExamples/ItkVtkGlue/QuickView.cxx) TARGET_LINK_LIBRARIES(VTKImageToImageFilter vtkHybrid ITKBasicFilters ITKCommon ITKIO ) </source>