正在读取.vtk文件

Reading .vtk file

本文关键字:文件 vtk 读取      更新时间:2023-10-16

我正在开发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替换为(最好是绝对)您的路径。