Предоставить параметры для программы OpenCV C ++ в ROS из внешнего файла

Я хочу написать программу, используя OpenCV C ++ интерфейс в ROS. Я хочу предоставить параметры, используемые программой из внешнего файла (не уверен, какой формат будет подходящим).

Скажем, я использую функцию порога в программе, вместо изменения порогового значения каждый раз в программе, сделайте, а затем запустите,
Я хочу, чтобы программа извлекала пороговое значение из файла, чтобы если я хочу изменить любое значение, я мог бы сделать это во внешнем файле.

Я хочу этого, потому что я думаю это будет полезно третьему лицу, которое может просто изменить различные параметры в файле и наблюдать за результатом вместо того, чтобы открывать программу, изменить значения, сделать и запустить (Иногда третье лицо не может быть программистом и просто хочет увидеть результаты, в этом случае он не будет знать технических деталей, где можно изменить параметры в программе)

Есть ли способ сделать это в ROS ?? Любой метод просто C ++ Также может быть предложена программа, требующая нескольких параметров.

0

Решение

хорошо, если это просто простые параметры:

#include <fstream>

// write:
int param1 = 17;
float param2=2.5f;
ofstream o("params.txt");
o << param1 << endl;
o << param2 << endl;

// read:
int param1;
float param2;
ifstream i("params.txt");
i >> param1;
i >> param2;

похожая идея, немного более продвинутая, для opencv, используйте FileStorage, это хранилище значений ключей:

Mat face_labels;
Mat face_features;

cv::FileStorage fs("face.yml",cv::FileStorage::WRITE);
fs << "L" << face_labels;
fs << "F" << face_features;

cv::FileStorage sf("face.yml",cv::FileStorage::READ);
sf["L"] >> face_labels;
sf["F"] >> face_features;
0

Другие решения

Вы можете сделать это через параметры ROS. Увидеть учебник по roscpp params и более подробно Обзор параметров roscpp. Вы, вероятно, хотите пойти дальше и использовать форму NodeHandle :: param (…), так как она позволяет легко определять значения по умолчанию.

0

По вопросам рекламы [email protected]