2012-09-06 57 views
0

我正在处理VTK (Qt on ubuntu 10.04)
我正在尝试阅读具有3D图像的.vtk文件。至于我能理解,这阅读.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++程序?

回答

1

如果您希望调用从VTK维基给出的例子编译PROGRAMM只需打开一个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与(最好是绝对)的路径。

+0

首先,我试图用GenericDataObjectReader.exe /home/taha/Downloads/VTK/Examples/so/output.vtk运行它。但是这会给GenericDataObjectReader.exe:找不到命令。当这种方式不能帮助我时,我做了你提出的第二个建议。我添加了这个命令行std :: string inputFilename =“/home/taha/Downloads/VTK/Examples/so/output.vtk”;到GenericDataObjectReader.cxx。结果是“没有指定目标,没有找到makefile,停止。”。我错了什么?我应该做什么不同? – TahaYusuf

+0

在像linux这样的非Windows系统上,可执行文件不会有.exe扩展名。 – drescherjm

+0

@ TahaYusuf:对于CMake,我不是一个聪明的人,但是你是否先调用cmake然后制作?因为您现在收到的错误消息看起来像您没有使用cmake来构建您的项目(vtk大量使用cmake) – Najzero