前段时间写的一个三维显示imageDate的例子,也是摸索了好久,现在发出来大家探讨一下,因为所有的filter都是我自己一边看资料一边试出来的,所以可能不是最好的解决方案,欢迎提出意见!
一,设计思路:
一,设计思路:
如下图所示:
上面有些filter都有很多参数的
设置,例如vtkPolyDataNormals,我在代码中有少量注释,大家也可以自己修改相关的参数,试验一下效果!
另外,上面为了大家能够方便测试,我用的是vtkdata里面的数据(编译是可能要改变成你自己的路径),但具体 应用的时候,肯定要使用我们自己的数据,下面也附上imagedata的生成方法:
//---------------------------------------------------------
//vtkImageData
//nx ny分别为行列数,space为cell的大小,ori_x和ori_y分别为x和y的起始坐标
double *data = new double[nx*ny];
//输入或者从文件中读取data
vtkDoubleArray *scalars = vtkDoubleArray::New();
scalars->SetArray(data,nx*ny,1);
vtkImageData *id = vtkImageData::New();
id->GetPointData()->SetScalars(scalars);
id->SetDimensions(nx,ny,1);
id->SetScalarTypeToDouble();
id->SetSpacing(space,space,1.0);
id->SetOrigin(ori_x,ori_y,0.0);
二,程序代码
这段代码是我刚刚跟 [尼罗河里的猫] 一起探讨vtkImageMask时的测试程序,后来也没有把相关部分删除,也可以让大家参考下mageMask的用法~而且在这里我们也遇到了一个问题,如果这张图里面我想做出一个空洞的效果(就像gif图片里的透明色),该如何完成,想到用mageMask::SetMaskAlpha(1),后来发现这个方法只是挡住了,mask的1值所在部分,并不是挖出一个圆来~这个到底如何实现呢,知道的朋友还望指教一二~
另外,在这段代码中我也用到了imageviewer来做二维显示,当然你如果只是想显示二维图像,用这个是最快捷的~但这里的交互style是用鼠标改变ColorWindow和ColorLevel,不太另人满意,当然你可以给鼠标事件添加obersver来屏蔽!显示完二维图像按'e'或者'q'就能看到三维图像了~效果还行~
另外,上面为了大家能够方便测试,我用的是vtkdata里面的数据(编译是可能要改变成你自己的路径),但具体 应用的时候,肯定要使用我们自己的数据,下面也附上imagedata的生成方法:
//---------------------------------------------------------
//vtkImageData
//nx ny分别为行列数,space为cell的大小,ori_x和ori_y分别为x和y的起始坐标
double *data = new double[nx*ny];
//输入或者从文件中读取data
vtkDoubleArray *scalars = vtkDoubleArray::New();
scalars->SetArray(data,nx*ny,1);
vtkImageData *id = vtkImageData::New();
id->GetPointData()->SetScalars(scalars);
id->SetDimensions(nx,ny,1);
id->SetScalarTypeToDouble();
id->SetSpacing(space,space,1.0);
id->SetOrigin(ori_x,ori_y,0.0);
二,程序代码
这段代码是我刚刚跟 [尼罗河里的猫] 一起探讨vtkImageMask时的测试程序,后来也没有把相关部分删除,也可以让大家参考下mageMask的用法~而且在这里我们也遇到了一个问题,如果这张图里面我想做出一个空洞的效果(就像gif图片里的透明色),该如何完成,想到用mageMask::SetMaskAlpha(1),后来发现这个方法只是挡住了,mask的1值所在部分,并不是挖出一个圆来~这个到底如何实现呢,知道的朋友还望指教一二~
另外,在这段代码中我也用到了imageviewer来做二维显示,当然你如果只是想显示二维图像,用这个是最快捷的~但这里的交互style是用鼠标改变ColorWindow和ColorLevel,不太另人满意,当然你可以给鼠标事件添加obersver来屏蔽!显示完二维图像按'e'或者'q'就能看到三维图像了~效果还行~