#include <vtkSmartPointer.h>
#include <vtkImageExtractComponents.h>
#include <vtkImageLuminance.h>
#include <vtkImageMathematics.h>
#include <vtkImageLogic.h>
#include <vtkPNGReader.h>
#include <vtkImageViewer2.h>
#include <vtkRenderWindow.h>
#include <vtkRenderWindowInteractor.h>
#include <vtkRenderer.h>
#include <vtkBMPReader.h>
#include <vtkJPEGReader.h>
#include <vtkImageData.h>
#include <vtkImageIterator.h>
#include "vtkAutoInit.h"
VTK_MODULE_INIT(vtkRenderingOpenGL2); // VTK was built with vtkRenderingOpenGL2
VTK_MODULE_INIT(vtkInteractionStyle);
//测试图像:../data/lena.bmp
int main()
{
vtkSmartPointer<vtkJPEGReader> reader1 =
vtkSmartPointer<vtkJPEGReader>::New();
reader1->SetFileName("test22.jpg");
reader1->Update();
vtkSmartPointer<vtkImageLuminance> luminanceFliter1 = vtkSmartPointer<vtkImageLuminance>::New();
luminanceFliter1->SetInputConnection(reader1->GetOutputPort());
luminanceFliter1->Update();
vtkSmartPointer<vtkJPEGReader> reader2 =
vtkSmartPointer<vtkJPEGReader>::New();
reader2->SetFileName("test33.jpg");
reader2->Update();
vtkSmartPointer<vtkImageLuminance> luminanceFliter2 = vtkSmartPointer<vtkImageLuminance>::New();
luminanceFliter2->SetInputConnection(reader2->GetOutputPort());
luminanceFliter2->Update();
//如果两个图像大小必须相等
//有2个参数
vtkSmartPointer<vtkImageLogic> imgMath = vtkSmartPointer<vtkImageLogic>::New();
imgMath->SetOperationToAnd();
imgMath->SetOutputTrueValue(128);
imgMath->SetInput1Data(reader2->GetOutput());
imgMath->SetInput2Data(reader1->GetOutput());
有1个参数
//vtkSmartPointer<vtkImageLogic> imgMath = vtkSmartPointer<vtkImageLogic>::New();
//imgMath->SetOperationToNot();
//imgMath->SetOutputTrueValue(128);
//imgMath->SetInput1Data(reader1->GetOutput());
imgMath->Update();
int dims[3];
imgMath->GetOutput()->GetDimensions(dims);
std::cout << "图像维数:" << dims[0] << " " << dims[1] << " " << dims[2] << std::endl;
//显示
vtkSmartPointer<vtkImageViewer2> imageViewer =
vtkSmartPointer<vtkImageViewer2>::New();
imageViewer->SetInputConnection(imgMath->GetOutputPort());
vtkSmartPointer<vtkRenderWindowInteractor> renderWindowInteractor =
vtkSmartPointer<vtkRenderWindowInteractor>::New();
imageViewer->SetupInteractor(renderWindowInteractor);
imageViewer->Render();
imageViewer->GetRenderer()->ResetCamera();
imageViewer->Render();
imageViewer->GetRenderer()->SetBackground(1.0, 1.0, 1.0);
//imageViewer->SetSize(640, 480);
imageViewer->GetRenderWindow()->SetWindowName("VisitImagePixelDirectlyExample");
renderWindowInteractor->Start();
system("pause");
return EXIT_SUCCESS;
}