#include <vtkSmartPointer.h>
#include <vtkJPEGReader.h>
#include <vtkImageLuminance.h>
#include <vtkImageCast.h>
#include <vtkImageData.h>
#include <vtkImageConvolve.h>
#include <vtkImageViewer2.h>
#include <vtkRenderWindow.h>
#include <vtkRenderWindowInteractor.h>
#include <vtkRenderer.h>
#include "vtkAutoInit.h"
VTK_MODULE_INIT(vtkRenderingOpenGL2); // VTK was built with vtkRenderingOpenGL2
VTK_MODULE_INIT(vtkInteractionStyle);
int main()
{
//读入jpg图像
vtkSmartPointer<vtkJPEGReader> reader1 =
vtkSmartPointer<vtkJPEGReader>::New();
reader1->SetFileName("test1.jpg");
reader1->Update();
//将jpg图像转为灰度图像
vtkSmartPointer<vtkImageLuminance> luminanceFliter1 =
vtkSmartPointer<vtkImageLuminance>::New();
luminanceFliter1->SetInputConnection(reader1->GetOutputPort());
luminanceFliter1->Update();
vtkSmartPointer<vtkImageCast> orignCastFilter =
vtkSmartPointer<vtkImageCast>::New();
orignCastFilter->SetInputConnection(reader1->GetOutputPort());
orignCastFilter->SetOutputScalarTypeToFloat();
orignCastFilter->Update();
//laplacian边缘算子
double laplacianKernel[9] = {0, -1, 0,
-1, 4, -1,
0, -1, 0};
//sobel边缘算子
double sobelKernel[9] = {-1, -2, -1,
0, 0, 0,
1, 2, 1 };
//LoG边缘算子
double GaussOfLaplacianKernel[25] = { -2, -4, -4, -4, -2,
-4, 0, 8, 0, -4,
-4, 8, 24, 8, -4,
-4, 0, 8, 0, -4,
-2, -4, -4, -4, -2};
vtkSmartPointer<vtkImageConvolve> orignConvFilter =
vtkSmartPointer<vtkImageConvolve>::New();
orignConvFilter->SetInputConnection(orignCastFilter->GetOutputPort());
//orignConvFilter->SetKernel3x3(sobelKernel);
orignConvFilter->SetKernel5x5(GaussOfLaplacianKernel);
orignConvFilter->Update();
//图像的长*宽
int dims[3];
orignConvFilter->GetOutput()->GetDimensions(dims);
std::cout << "图像维数:" << dims[0] << " " << dims[1] << " " << dims[2] << std::endl;
//显示
vtkSmartPointer<vtkImageViewer2> imageViewer =
vtkSmartPointer<vtkImageViewer2>::New();
imageViewer->SetInputConnection(orignConvFilter->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;
}