![]() |
OpenCV 4.13.0
Open Source Computer Vision
|
通常の GComputation に型付けを施したラッパクラス。 続き...
通常の GComputation に型付けを施したラッパクラス。
std::function<> のようなテンプレート引数がグラフのシグネチャを指定するため、オブジェクトのコンストラクタや apply() などのメソッド、派生クラスの GCompiledT::operator() も型付けされる。
このクラスのオブジェクトでは cv::gin() や cv::gout() 修飾子を使う必要はない。代わりに、すべての入力引数の後に、テンプレート引数のシグネチャ順ですべての出力引数が続く。
以下の例を参照のこと。通常の(型付けされていない)コードは次のように書く。
各引数の説明:
apply() は実際には任意個の引数(ベクトルとして)を取るため、ユーザが誤った数の入出力を渡してしまうことがある。cv::GComputation APIは多態的であるため、C++コンパイラはそれに気付かず、実行時エラーが生成されるだけである。次に、同じコードを型付けAPIで書いたもの。
主な違いは次のとおり。
GComputationT<> のシグネチャで定義されたとおりに、引数を必ず受け取り、値を必ず返さなければならない。apply() は、入力引数と出力引数を区別するための追加の指定子を必要としないGCompiledT(コンパイル成果物)も同様に、追加の指定子なしで入出力引数を取る。