0

我想在ROS中使用OpenCV C++接口编写一个程序。我想从外部文件提供程序使用的参数(不确定哪种格式适合)。

说,我在程序中使用阈值函数,而不是每次在程序中更改阈值,make 然后运行,我希望程序从文件中获取阈值,以便如果我想更改任何值,我可以在外部文件中做到这一点

我想要这个,因为我认为这对第三人会有所帮助,他可以只更改文件中的各种参数并观察结果,而不是打开程序,更改值,制作和运行(有时第三人可能不是程序员,只是希望看到结果,在这种情况下,他将不知道在哪里更改程序中的参数的技术细节

有没有办法在ROS中做到这一点?也可以建议任何仅用于需要多个参数的C++程序的方法。

4

2 回答 2

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;
于 2013-02-17T20:16:54.543 回答
0

您可以通过 ROS 参数执行此操作。请参阅roscpp 参数教程和更详细的roscpp 参数概述。您可能希望继续使用 NodeHandle::param(...) 表单,因为它可以轻松指定默认值。

于 2013-02-18T23:11:19.647 回答