#include "itkImage.h"
#include "itkImageFileReader.h"
#include "itkImageFileWriter.h"
#include "itkPNGImageIOFactory.h"
#include "itkJPEGImageIOFactory.h"
#include "itkThresholdImageFilter.h"
#include "itkImageToVTKImageFilter.h"
#include "vtkImageActor.h"
//#include "vtkImageData.h"
#include"vtkSmartPointer.h"
#include "vtkImageFlip.h"
#include "vtkImageViewer.h"
#include "vtkRenderWindowInteractor.h"
#include "vtkAutoInit.h"
VTK_MODULE_INIT(vtkRenderingOpenGL2); // VTK was built with vtkRenderingOpenGL2
VTK_MODULE_INIT(vtkInteractionStyle);
int main(int argc, char ** argv) {
typedef itk::Image<unsigned char, 2> ImageType;
typedef itk::ThresholdImageFilter< ImageType > FilterType;
typedef itk::ImageFileReader<ImageType> ReaderType;
typedef itk::ImageFileWriter<ImageType> WriterType;
typedef itk::ImageToVTKImageFilter<ImageType> ConnectorType; //connenct itk and vtk
itk::JPEGImageIOFactory::RegisterOneFactory();
//itk::PNGImageIOFactory::RegisterOneFactory();
FilterType::Pointer filter = FilterType::New();
ReaderType::Pointer reader = ReaderType::New();
WriterType::Pointer writer = WriterType::New();
ConnectorType::Pointer connector = ConnectorType::New();
reader->SetFileName("test1.jpg"); //要读取的文件名
writer->SetFileName("test_.jpg"); //写入的文件名
filter->SetInput(reader->GetOutput());
filter->SetOutsideValue(0);
filter->ThresholdBelow(100);
filter->Update();
//writer->SetInput(reader->GetOutput());
writer->SetInput(filter->GetOutput());
try {
writer->Update();
}
catch (itk::ExceptionObject &err) {
std::cerr << "ExceptionObject Caught" << std::endl;
std::cerr << err << std::endl;
system("pause");
return EXIT_FAILURE;
}
connector->SetInput(filter->GetOutput());
connector->Update();
/*vtkImageActor *m_pvtkImageActor = vtkImageActor::New();
m_pvtkImageActor->SetOrigin(m_pvtkImageActor->GetCenter());
m_pvtkImageActor->RotateX(180);*/
//vtkImageFlip *imageflip = vtkImageFlip::New();
//imageflip->SetInputConnection(connector->GetOutput());
//imageflip->SetFilteredAxes(1);//Y轴
//vtkImageFlip *imageflip = vtkImageFlip::New();
//imageflip->SetInput(connector->GetOutput());
//imageflip->SetFilteredAxes(1);//Y轴
//imageflip->Update();
//vtkSmartPointer<vtkImageFlip> flip = vtkSmartPointer<vtkImageFlip>::New();
//flip->SetInput(connector->GetOutput());
//flip->SetFilteredAxes(1);
//flip->Update();
vtkImageViewer *viewer = vtkImageViewer::New();
vtkRenderWindowInteractor *interactor = vtkRenderWindowInteractor::New();
/*viewer->SetInputData(imageflip->GetOutput());*/
viewer->SetInputData(connector->GetOutput());
viewer->SetupInteractor(interactor);
viewer->GetRenderWindow()->SetSize(500, 500);//set window size
viewer->SetColorWindow(255); //set window color
viewer->SetColorLevel(128); //set the level of window
viewer->Render();
interactor->Initialize();
interactor->Start();
return EXIT_SUCCESS;
}