VTK 像素值输出和赋值

版权声明:小薛薛的博客 https://blog.csdn.net/qq_35007834/article/details/86070193

一般都是按照下面的程序进行的:


	vtkSmartPointer<vtkBMPReader> reader = vtkSmartPointer<vtkBMPReader>::New();  //读取图像
	reader->SetFileName("test.bmp");
	reader->Update();
	int dims[3];
	reader->GetOutput()->GetDimensions(dims);   
	int nbofcomp;
	nbofcomp = reader->GetOutput()->GetNumberOfScalarComponents();
	for (int k = 0; k < dims[2];k++){
		for (int j = 0; j < dims[1]; j++){
			for (int i = 0; i < dims[0]; i++){
                    unsigned char *pixel=(unsigned char*)(reader->GetOutput()-                      >GetScalarPointer (i,j,k));
                    //输出每个点的值,需转化为int 型
                     std::cout << int(*pixel) <<std::endl;		
                    //赋值语句
                    *pixel = 135;
			
		   }
		}
	}
	

 有个问题,我用的 vtkMetaImageReader 读进去.mhd文件的数据,用上面的方法读出来的所有的点的体素值都是0;

这个mhd正确数据是0和1,3D二值图数据,但是体素值都是0,不知道为什么?无奈我最后用ITK把文件读进来,把所有为1的体素点提取出来,生成点云,再曲面重建,后续处理。

有哪个同仁知道这是怎么回事?

猜你喜欢

转载自blog.csdn.net/qq_35007834/article/details/86070193