2012-09-06 58 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