1

我正在努力VTK (Qt on ubuntu 10.04)
我正在尝试读取.vtk具有 3D 图像的文件。据我了解,这

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++ 程序?

4

1 回答 1

3

如果您想从 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替换为(最好是绝对的)您的路径。

于 2012-09-06T14:00:55.193 回答