VTK 像素值输出和赋值

 

 

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


    vtkSmartPointer<vtkBMPReader> reader = vtkSmartPointer<vtkBMPReader>::New();         
    reader->SetFileName("test.bmp");
    reader->Update();
 
    int dims[3];
    reader->GetOutput()->GetDimensions(dims);
 
    std::cout<< "图像维数:"<<dims[0] <<" "<< dims[1] <<" "<<dims[2]<< std::endl;
 
    double origin[3];
    reader->GetOutput()->GetOrigin(origin);
    std::cout<<"图像原点:"<<origin[0]<<" "<<origin[1]<<" "<<origin[2]<< std::endl;
 
    double spaceing[3];
    reader->GetOutput()->GetSpacing(spaceing);

    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的体素点提取出来,生成点云,再曲面重建,后续处理。

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值