【引用】VTK体绘制
#pragma comment (lib, \void main() {
vtkRenderer *ren = vtkRenderer::New();//设置绘制者(绘制对象指针)
vtkRenderWindow *renWin = vtkRenderWindow::New();//设置绘制窗口
renWin->AddRenderer(ren);//将绘制者加入绘制窗口 vtkRenderWindowInteractor *iren =
vtkRenderWindowInteractor::New();//设置绘制交互操作窗口的
iren->SetRenderWindow(renWin);//将绘制窗口添加到交互窗口
vtkInteractorStyleTrackballCamera *style =
vtkInteractorStyleTrackballCamera::New();//交互摄像机 iren->SetInteractorStyle(style);//style为交互模式 //raw 图片
vtkImageReader *reader = vtkImageReader::New(); reader->SetFileName(\
reader->SetFileDimensionality(3);//设置显示图像的维数
reader->SetDataScalarType(VTK_UNSIGNED_CHAR);//VTK_UNSIGNED_short将数据转换为unsigned char型 reader->SetDataExtent(0,255,0,255,0,123);//图片属性图片像素256x256,最后两参数表示有124张图
reader->SetDataSpacing (0.9,0.9,0.9); //设置像素间间距 reader->SetDataOrigin(0.0, 0.0, 0.0);//设置基准点,(一般没有用)做虚拟切片时可能会用的上 //读取DICOM数据 /*
vtkVolume16Reader *reader=vtkVolume16Reader::New(); reader->SetDataDimensions (64,64);//设置图像像素值 reader->SetImageRange (1,93); //设置图片数量(读取切片的起始端)
reader->SetDataByteOrderToLittleEndian();//指明读入字节顺序(可有可无)
reader->SetFilePrefix(\5.4\\\\vtkdata\\\\Data\\\\headsq\\\\quarter\设置数据路径 reader->SetDataSpacing (3.2,3.2,1.5); //设置像素间距 reader->SetDataOrigin(0.0, 0.0, 0.0);//设置基准点 */
/*
vtkDICOMImageReader *reader = vtkDICOMImageReader::New();
reader->SetDataByteOrderToLittleEndian(); reader->SetDirectoryName(\ reader->SetDataSpacing(3.2, 3.2, 1.5);
reader->SetDataOrigin(0.0, 0.0, 0.0);//设置基准点 */
// BMP图片
/* vtkBMPReader *reader = vtkBMPReader::New(); reader->SetDataExtent(0,175,0,135,1,3);//其中最后一个参数20 就表示我的图像序列有20张图像 reader->SetFilePrefix(\
reader->SetDataSpacing (1, 1, 2);//像素间的间隔 reader->SetDataOrigin(0.0,0.0,0.0);
reader->SetAllow8BitBMP (8) ;//很重要设置读入的bmp图片是8位
reader->Allow8BitBMPOff();//标志 */
// PNG图片
/* vtkPNGReader *reader = vtkPNGReader::New();
reader->SetDataByteOrderToLittleEndian();
reader->SetFileName(\一张,多张SetFilePrefix
reader->SetDataSpacing(3.2, 3.2, 1.5); reader->SetDataOrigin(0.0,0.0,0.0); */
/* //JPEG图片
vtkJPEGReader *reader = vtkJPEGReader::New(); reader->SetDataByteOrderToLittleEndian(); reader->SetFileDimensionality(3);
reader->SetFileName(\reader->SetHeaderSize(0);
reader->SetDataSpacing(3.2, 3.2, 1.5); reader->SetDataOrigin(0.0,0.0,0.0); */
vtkImageCast *readerImageCast = vtkImageCast::New();//数据类型转换
readerImageCast->SetInputConnection(reader->GetOutputPort());
readerImageCast->SetOutputScalarTypeToUnsignedShort ();
readerImageCast->ClampOverflowOn();//阀值 //reader->Delete();
//设置不透明度传递函数//该函数确定各体绘像素或单位长度值的不透明度
vtkPiecewiseFunction *opacityTransferFunction = vtkPiecewiseFunction::New();//一维分段函数变换 opacityTransferFunction->AddPoint(20, 0.0); opacityTransferFunction->AddPoint(255, 0.2);
//设置颜色传递函数//该函数确定体绘像素的颜色值或者灰度值
vtkColorTransferFunction *colorTransferFunction = vtkColorTransferFunction::New();
colorTransferFunction->AddRGBPoint(0.0, 0.0, 0.5, 0.0);//添加色彩点(第一个参数索引)
colorTransferFunction->AddRGBPoint(60.0, 1.0, 0.0, 0.0);
colorTransferFunction->AddRGBPoint(128.0, 0.2, 0.1, 0.9);
colorTransferFunction->AddRGBPoint(196.0, 0.27, 0.21, 0.1);
[引用]VTK体绘制



