0

ROSでOpenCV C++インターフェイスを使用してプログラムを作成したいと考えています。プログラムが使用するパラメータを外部ファイルから提供したい(どの形式が適切かわかりません)。

たとえば、プログラムで毎回しきい値を変更する代わりに、プログラムでしきい値関数を使用し、作成してから実行すると、プログラムでファイルからしきい値をフェッチして、値を変更したい場合は、私は外部ファイルでそれを行うことができました

これが欲しいのは、プログラムを開いて値を変更し、作成して実行するのではなく、ファイル内のさまざまなパラメーターを変更して結果を観察するだけでよい第三者にとって役立つと思うからです(第三者がそうでない場合もあります)プログラマーで、結果を見たいだけの場合、その場合、プログラムのどこでパラメーターを変更するかという技術的なことを知りません)

ROSでこれを行う方法はありますか?? いくつかのパラメーターを必要とするC++プログラムだけの方法も提案できます。

4

2 に答える 2

0

これは、ROS パラメータを介して行うことができます。roscpp params のチュートリアルと、より詳細なroscpp params の概要を参照してください。デフォルトを簡単に指定できるので、NodeHandle::param(...) フォームを使用することをお勧めします。

于 2013-02-18T23:11:19.647 に答える
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 に答える