我正在嘗試編寫一個程序,通過使用VTK和C++來讀取MRI數據。但我無法獲得主要MRI原始數據的間隔。 「GetSpacing」僅適用於「ReadImageData」函數。我認爲我在C++編程中犯了一些錯誤。但我不知道它在哪裏。爲什麼我無法訪問main中的imagedata?
vtkImageData* ReadImageData(string mri_imagedata_file)
{
vtkSmartPointer<vtkMetaImageReader> reader =
vtkSmartPointer<vtkMetaImageReader>::New();
reader->SetFileName(mri_imagedata_file.c_str());
reader->Update();
vtkImageData* metaimage = reader->GetOutput();
double sp[3];
metaimage->GetSpacing(sp);
cout << sp[0] << " " << sp[1] << " " << sp[2] <<endl; //<----------It works here.
return metaimage;
}
int main (int argc, char *argv[])
{
if(argc != 2)
{
cerr << "Usage: " << argv[0] << " MRI image data" <<endl;
return EXIT_FAILURE;
}
string mri_imagedata_file = argv[1];// Input "prost00.mhd"
vtkImageData* metaimage = ReadImageData(mri_imagedata_file);
double sp2[3];
metaimage->GetSpacing(sp2);
cout << sp2[0] << " " << sp2[1] << " " << sp2[2] << endl; //<-----It doesn't work here
}
感謝您的關注。
什麼是「間距」,你爲什麼不把它傳遞給'GetSpacing'? [documentation](http://www.vtk.org/doc/nightly/html/classvtkImageData.html#aab194f5cebd12e406fbd9e3c7047ed0f)表明你應該傳遞一個數組或者使用返回值'double *'。 – 2013-04-23 11:08:49
@PeterWood謝謝你提醒我。代碼被修改:) – Yao 2013-04-23 11:37:09