CMakeList.txt
cmake_minimum_required(VERSION 2.8)
PROJECT(GrayImageImport)
find_package (Qt4 REQUIRED)
include_directories (
${CMAKE_SOURCE_DIR} ${CMAKE_CURRENT_BINARY_DIR}
${QT_QTCORE_INCLUDE_DIR} ${QT_QTGUI_INCLUDE_DIR} ${QT_QTXML_INCLUDE_DIR}
${QT_QTNETWORK_INCLUDE_DIR}
)
find_package(VTK REQUIRED)
include(${VTK_USE_FILE})
set ( _RSCS
spm.qrc
)
QT4_ADD_RESOURCES(RSCS ${_RSCS})
set ( _MOCS)
QT4_WRAP_CPP(MOCS ${_MOCS})
add_executable(GrayImageImport MACOSX_BUNDLE GrayImageImport.cxx)
if(VTK_LIBRARIES)
target_link_libraries(GrayImageImport ${VTK_LIBRARIES} ${QT_QTCORE_LIBRARY} ${QT_QTGUI_LIBRARY} ${QT_QTXML_LIBRARY})
else()
target_link_libraries(GrayImageImport vtkHybrid vtkWidgets ${QT_QTCORE_LIBRARY} ${QT_QTGUI_LIBRARY} ${QT_QTXML_LIBRARY})
endif()
灰度图
#include <vtkVersion.h>
#include <vtkImageData.h>
#include <vtkSmartPointer.h>
#include <vtkImageImport.h>
#include <vtkRenderWindow.h>
#include <vtkRenderWindowInteractor.h>
#include <vtkRenderer.h>
#include <vtkImageActor.h>
#include <vtkInteractorStyleImage.h>
#include <vtkXMLImageDataWriter.h>
#include <vtkImageMapper3D.h>
#include <vtkImageSlabReslice.h>
#include <vtkImageMapToColors.h>
#include <vtkImageMapper.h>
#include <vtkLookupTable.h>
#include <vtkActor2D.h>
int main(int, char *[])
{
// Create a c-style image
const int width = 4;
const int height = 4;
unsigned char cImage[width*height];
unsigned char value = 200;
for(unsigned int row = 0; row < height; ++row)
{
for(unsigned int col = 0; col < width; ++col)
{
cImage[row * width + col] = 180;
}
}
// Convert the c-style image to a vtkImageData
vtkSmartPointer<vtkImageImport> imageImport =
vtkSmartPointer<vtkImageImport>::New();
imageImport->SetDataSpacing(1, 1, 1);
imageImport->SetDataOrigin(0, 0, 0);
imageImport->SetWholeExtent(0, width-1, 0, height-1, 0, 0);
imageImport->SetDataExtentToWholeExtent();
imageImport->SetDataScalarTypeToUnsignedChar();
imageImport->SetNumberOfScalarComponents(1);
imageImport->SetImportVoidPointer(cImage);
imageImport->Update();
// Create an actor
vtkSmartPointer<vtkImageActor> actor =
vtkSmartPointer<vtkImageActor>::New();
#if VTK_MAJOR_VERSION <= 5
actor->SetInput(imageImport->GetOutput());
#else
actor->SetInputData(imageImport->GetOutput());
#endif
// Setup renderer
vtkSmartPointer<vtkRenderer> renderer =
vtkSmartPointer<vtkRenderer>::New();
renderer->AddActor(actor);
renderer->ResetCamera();
// Setup render window
vtkSmartPointer<vtkRenderWindow> renderWindow =
vtkSmartPointer<vtkRenderWindow>::New();
renderWindow->AddRenderer(renderer);
// Setup render window interactor
vtkSmartPointer<vtkRenderWindowInteractor> renderWindowInteractor =
vtkSmartPointer<vtkRenderWindowInteractor>::New();
vtkSmartPointer<vtkInteractorStyleImage> style =
vtkSmartPointer<vtkInteractorStyleImage>::New();
renderWindowInteractor->SetInteractorStyle(style);
// Render and start interaction
renderWindowInteractor->SetRenderWindow(renderWindow);
renderWindowInteractor->Initialize();
renderWindowInteractor->Start();
return EXIT_SUCCESS;
}
彩色图
#include <vtkVersion.h>
#include <vtkImageData.h>
#include <vtkSmartPointer.h>
#include <vtkImageImport.h>
#include <vtkRenderWindow.h>
#include <vtkRenderWindowInteractor.h>
#include <vtkRenderer.h>
#include <vtkImageActor.h>
#include <vtkInteractorStyleImage.h>
#include <vtkXMLImageDataWriter.h>
#include <vtkImageMapper3D.h>
#include <vtkImageSlabReslice.h>
#include <vtkImageMapToColors.h>
#include <vtkImageMapper.h>
#include <vtkLookupTable.h>
#include <vtkActor2D.h>
int main(int, char *[])
{
// Create a c-style image
const int width = 4;
const int height = 4;
unsigned char cImage[width*height*3];
unsigned char value = 200;
for(unsigned int row = 0; row < height; ++row)
{
for(unsigned int col = 0; col < width; ++col)
{
cImage[row * width*3 + col*3 + 0] = 180;
}
}
for(unsigned int row = 0; row < height; ++row)
{
for(unsigned int col = 0; col < width; ++col)
{
cImage[row * width*3 + col*3 + 1] = 120;
}
}
for(unsigned int row = 0; row < height; ++row)
{
for(unsigned int col = 0; col < width; ++col)
{
cImage[row * width*3 + col*3 + 2] = 60;
}
}
// Convert the c-style image to a vtkImageData
vtkSmartPointer<vtkImageImport> imageImport =
vtkSmartPointer<vtkImageImport>::New();
imageImport->SetDataSpacing(1, 1, 1);
imageImport->SetDataOrigin(0, 0, 0);
imageImport->SetWholeExtent(0, width-1, 0, height-1, 0, 0);
imageImport->SetDataExtentToWholeExtent();
imageImport->SetDataScalarTypeToUnsignedChar();
imageImport->SetNumberOfScalarComponents(3);
imageImport->SetImportVoidPointer(cImage);
imageImport->Update();
// Create an actor
vtkSmartPointer<vtkImageActor> actor =
vtkSmartPointer<vtkImageActor>::New();
#if VTK_MAJOR_VERSION <= 5
actor->SetInput(imageImport->GetOutput());
#else
actor->SetInputData(imageImport->GetOutput());
#endif
// Setup renderer
vtkSmartPointer<vtkRenderer> renderer =
vtkSmartPointer<vtkRenderer>::New();
renderer->AddActor(actor);
renderer->ResetCamera();
// Setup render window
vtkSmartPointer<vtkRenderWindow> renderWindow =
vtkSmartPointer<vtkRenderWindow>::New();
renderWindow->AddRenderer(renderer);
// Setup render window interactor
vtkSmartPointer<vtkRenderWindowInteractor> renderWindowInteractor =
vtkSmartPointer<vtkRenderWindowInteractor>::New();
vtkSmartPointer<vtkInteractorStyleImage> style =
vtkSmartPointer<vtkInteractorStyleImage>::New();
renderWindowInteractor->SetInteractorStyle(style);
// Render and start interaction
renderWindowInteractor->SetRenderWindow(renderWindow);
renderWindowInteractor->Initialize();
renderWindowInteractor->Start();
return EXIT_SUCCESS;
}