2017-03-25 12 views
0

私はカスケード分類器のOpenCVのチュートリアルを見ているの過程にいるよ、この構文を参照して起こった:未知のC++オブジェクトのインスタンス化構文

std::vector<Rect> faces; 
Mat frame_gray;  
Mat faceROI = frame_gray(faces[i]);, 

frame_grayインスタンス化との間でいくつかの他のコードがありますfaceROIインスタンス化。私の質問は - どのようなfaceROIインスタンシエーションラインは何ですか/どのように動作するのですか?コピーコンストラクタの使用法のようですが、faces [i]パラメータは私を混乱させます。

http://docs.opencv.org/trunk/db/d28/tutorial_cascade_classifier.html - チュートリアル http://docs.opencv.org/3.1.0/d3/d63/classcv_1_1Mat.html#af1d014cecd1510cdf580bf2ed7e5aafc - マットクラスのドキュメント

+0

多分 'Mat'クラスは'演算子() 'を実装し、それらが機能したかのように、あなたがそのインスタンスを呼び出すことができます... – ForceBru

+0

リンクのドキュメントによると、 Mat :: operator()(const Rect&roi)const'を呼び出します。 – zett42

答えて

5

その行が

Mat operator()(const Rect &) 

はなくコピーコンストラクタを呼び出しています。この演算子は、関数のようにオブジェクトを呼び出すために使用されます。

あなたがここにこの演算子についての情報を見つけることができます。 http://docs.opencv.org/3.1.0/d3/d63/classcv_1_1Mat.html#a07413f2e3e63a12185b8b218c24c7270

+0

恐ろしい!私は()を無効にすることはできないとは考えていませんでした! – bensherms

関連する問題