2017-07-15 22 views
0

私が書いている(学習)私は、ユーザーが入力することができますしたいOpenCVのコードCV ::文字列のファイル名(.xmlファイル)とC++、main関数の入力引数

が私の主な機能であるdouble型の引数cmd.exeので

int main(int argc, const** argv) { 
    ... 

、私はプログラムが

cascadedClassifier.xmlは分類器を選択するユーザーのためのものであり、 0.5はdouble型である
> App.exe cascadedClassifier.xml 0.5 

のように呼ばれるようにしたいですイメージのサイズを変更するための番号

私の質問の1つは、入力引数がchar型ですが、分類子ファイルをロードする関数がcv::String typeである必要がありますが、2つの異なる型議論の?

もう1つの質問は、主機能の入力引数で、ユーザーが自由にcmd.exeでプログラムのダブルタイプ入力を割り当てることができますか?

ありがとうございます。

答えて

5
  1. C++言語仕様はint main(int argc, char* argv[])entrypoint functionを定義する - 同様にOpenCVのは、どちらかあなたのプログラムのエントリポイントに関係していない - それがすべてでOpenCVのとは何の関係もありません:MFCのように(OpenCVのライブラリではなく、アプリケーションフレームワークですかQt)。

  2. OpenCV's cv::Stringタイプdefines a constructor from const char* san implicit conversioncv::Stringを提供するために使用されます。

  3. すべてのコマンドライン引数が渡されたされているargvを通じて、あなたは標準のC/C++ mainエントリポイントと非char型の引数を渡すことはできません(CおよびC++は、非渡すための規則を定義しないためであります-string引数は、たとえばCmdlet引数が.NET型で定義されているPowerShellとは異なります)。引数を型付きデータに変換するには、atofまたはsscanfを使用する必要があります。

1

const char*は暗黙the official cv::String Class Referenceに従ってcv::Stringに変換することができます。
ダブルタイプの入力は、コマンドラインでは技術的に不可能です。 atof(const char*)関数を使用してchar*タイプをfloat/doubleタイプに変換することができます。

関連する問題