2013-02-17 39 views
0

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

说,我用的阈值函数的程序,,而不是在程序每次改变阈值,使然后运行, 我希望程序从文件读取的阈值,使如果我想更改任何值,我可以在外部文件中执行此操作。

我想这是因为我觉得这将有助于第三人谁可以只改变各种参数的文件中并观察结果而不是打开的程序,变化值,制造和运行(有时第三人可能不是一个程序员,只是希望看到的结果,在这种情况下,他不知道在哪里的程序

更改参数的技术问题有没有办法在ROS做到这一点??也可以建议任何只需要几个参数的程序。

回答

0

好,如果只是简单的PARAMS:

#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,这是一个key-value存储:

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 tutorial和更详细的roscpp params overview。您可能想继续使用NodeHandle :: param(...)表单,因为它可以很容易地指定默认值。

相关问题