2013-02-17 41 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(...)表單,因爲它可以很容易地指定默認值。

相關問題