我正在研究VTK (Qt on ubuntu 10.04)
。
我正在尝试读取具有3D图像的.vtk
文件。据我了解,
http://www.vtk.org/Wiki/VTK/Examples/Cxx/IO/GenericDataObjectReader
使读取任何vtk文件成为可能。但是,它不起作用。我得到的是:
Starting /home/taha/Downloads/VTK/Examples/qtcreator-build/GenericDataObjectReader...
Usage: /home/taha/Downloads/VTK/Examples/qtcreator-build/GenericDataObjectReader InputFilename
/home/taha/Downloads/VTK/Examples/qtcreator-build/GenericDataObjectReader exited with code 1
1)我使用的代码是否正常工作?我应该改变一些东西吗?
即使我知道我需要将文件名作为参数传递,我可能也不知道如何从命令提示符下执行。我在互联网上对此进行了详细搜索,但是我遵循的方式可能是错误的。
2)如何将文件名作为参数传递给C++?
最佳答案
如果您希望从vtk-wiki给出的示例中调用已编译的程序,只需打开一个shell / dos窗口并输入:
yourExecutable.exe path-to-file.vtk
如上面的输出所示,您不符合要运行的示例的要求(2个参数)。
一个参数(第一个)是用法(调用的程序),第二个参数包含您要读取的vtk文件的路径。
如果您不想使用参数调用它,则可以将给定的示例更改为:
int main ( int argc, char *argv[] )
{
// simply set filename here (oh static joy)
std::string inputFilename = "setYourPathToVtkFileHere";
// Get all data from the file
vtkSmartPointer<vtkGenericDataObjectReader> reader =
vtkSmartPointer<vtkGenericDataObjectReader>::New();
reader->SetFileName(inputFilename.c_str());
reader->Update();
// All of the standard data types can be checked and obtained like this:
if(reader->IsFilePolyData())
{
std::cout << "output is a polydata" << std::endl;
vtkPolyData* output = reader->GetPolyDataOutput();
std::cout << "output has " << output->GetNumberOfPoints() << " points." << std::endl;
}
return EXIT_SUCCESS;
}
只需将setYourPathToVtkFileHere替换为您的路径(最好是绝对路径)即可。
关于c++ - 读取.vtk文件,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12300310/