Я работаю на 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 ++?
Если вы хотите вызвать скомпилированную программу из примера, данного в 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 с (желательно абсолютным) вашим путем.
Других решений пока нет …