#include <vtkSmartPointer.h>
#include <vtkImageExtractComponents.h>
#include <vtkImageLuminance.h>
#include <vtkImageMathematics.h>
#include <vtkImageThreshold.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("test1.jpg");
reader2->Update();
vtkSmartPointer<vtkImageLuminance> luminanceFliter2 = vtkSmartPointer<vtkImageLuminance>::New();
luminanceFliter2->SetInputConnection(reader2->GetOutputPort());
luminanceFliter2->Update();
如果两个图像大小相等,进行像素运算后得到的图像宽与高为两个图像宽高
如果两个图像大小不相等,进行像素运算后得到的图像宽与高分别为两个图像宽的最小值与高的最小值
有2个参数
//vtkSmartPointer<vtkImageMathematics> imgMath = vtkSmartPointer<vtkImageMathematics>::New();
//imgMath->SetOperationToDivide();
//imgMath->SetInput1Data(reader1->GetOutput());
//imgMath->SetInput2Data(reader2->GetOutput());
//有1个参数
vtkSmartPointer<vtkImageMathematics> imgMath = vtkSmartPointer<vtkImageMathematics>::New();
imgMath->SetOperationToMultiplyByK();
imgMath->SetConstantK(1.5);
imgMath->SetInput1Data(reader2->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;
}