Cascade classifier class for object detection.
[詳解]
#include <objdetect.hpp>
| 
 | 
| 
static CV_WRAP bool | 
convert
(const String &oldcascade, const String &newcascade) | 
 | 
| 
 | 
| 
CV_OUT std::vector<
Rect
> & | 
objects
 | 
 | 
| 
CV_OUT std::vector<
Rect
> CV_OUT std::vector< int > & | 
numDetections
 | 
 | 
| 
CV_OUT std::vector<
Rect
> CV_OUT std::vector< int > double | 
scaleFactor
=1.1 | 
 | 
| 
CV_OUT std::vector<
Rect
> CV_OUT std::vector< int > double int | 
minNeighbors
=3 | 
 | 
| 
CV_OUT std::vector<
Rect
> CV_OUT std::vector< int > double int int | 
flags
=0 | 
 | 
| 
CV_OUT std::vector<
Rect
> CV_OUT std::vector< int > double int int
Size | 
minSize
=Size() | 
 | 
| 
CV_OUT std::vector<
Rect
> CV_OUT std::vector< int > double int int
Size
Size | 
maxSize
=Size() ) | 
 | 
| 
CV_OUT std::vector<
Rect
> CV_OUT std::vector< int > & | 
rejectLevels
 | 
 | 
| 
CV_OUT std::vector<
Rect
> CV_OUT std::vector< int > CV_OUT std::vector< double > & | 
levelWeights
 | 
 | 
| 
CV_OUT std::vector<
Rect
> CV_OUT std::vector< int > CV_OUT std::vector< double > double | 
scaleFactor
= 1.1 | 
 | 
| 
CV_OUT std::vector<
Rect
> CV_OUT std::vector< int > CV_OUT std::vector< double > double int | 
minNeighbors
= 3 | 
 | 
| 
CV_OUT std::vector<
Rect
> CV_OUT std::vector< int > CV_OUT std::vector< double > double int int | 
flags
= 0 | 
 | 
| 
CV_OUT std::vector<
Rect
> CV_OUT std::vector< int > CV_OUT std::vector< double > double int int
Size | 
minSize
=
Size() | 
 | 
| 
CV_OUT std::vector<
Rect
> CV_OUT std::vector< int > CV_OUT std::vector< double > double int int
Size
Size | 
maxSize
=
Size() | 
 | 
| 
CV_OUT std::vector<
Rect
> CV_OUT std::vector< int > CV_OUT std::vector< double > double int int
Size
Size
bool | 
outputRejectLevels
= false ) | 
 | 
| 
Ptr<
BaseCascadeClassifier
> | 
cc
 | 
 | 
◆
CascadeClassifier()
| CV_WRAP cv::CascadeClassifier::CascadeClassifier
 | 
( | 
const String & | 
filename
 | 
) | 
 | 
 
ファイルから分類器を読み込みます。
- 引数
 
- 
| filename | 
分類器が読み込まれるファイルの名前. | 
 
 
 
◆
CV_WRAP_AS()
[1/2]
| cv::CascadeClassifier::CV_WRAP_AS
 | 
( | 
detectMultiScale2 | 
 | 
) | 
 | 
 
これはオーバーロードされたメンバ関数です。利便性のために用意されています。元の関数との違いは引き数のみです。
- 引数
 
- 
| image | 
オブジェクトが検出された画像を含む CV_8U 型の行列. | 
| objects | 
各矩形が検出されたオブジェクトを含む矩形のベクトルで,その矩形は部分的に元の画像の外側にあるかもしれません. | 
| numDetections | 
対応するオブジェクトの検出数のベクトル.オブジェクトの検出数は、正に分類された隣接する矩形が結合してオブジェクトを形成した数です。 | 
| scaleFactor | 
各画像スケールにおいて、画像サイズをどの程度縮小するかを指定するパラメータです。 | 
| minNeighbors | 
各候補の矩形を保持するために、何個の隣接矩形を持つべきかを指定するパラメータ。 | 
| flags | 
古いカスケードに対して,関数 cvHaarDetectObjects と同じ意味を持つパラメータ.これは,新しいカスケードでは利用されません. | 
| minSize | 
可能な最小オブジェクトサイズ.これよりも小さいオブジェクトは無視されます. | 
| maxSize | 
可能な最大オブジェクトサイズ.これよりも大きいオブジェクトは無視されます.もしmaxSize == minSizeモデルはシングルスケールで評価されます。 | 
 
 
 
◆
CV_WRAP_AS()
[2/2]
| cv::CascadeClassifier::CV_WRAP_AS
 | 
( | 
detectMultiScale3 | 
 | 
) | 
 | 
 
これはオーバーロードされたメンバ関数です。利便性のために用意されています。元の関数との違いは引き数のみです。 この関数は、分類の最終段階の決定確実性を取得することができます。このためには、まずoutputRejectLevelsをtrueに設定し、パラメータrejectLevelsおよびlevelWeightsパラメータを指定します。各検出結果に対してlevelWeightsは、最終段階での分類の確実性を表します。この値を使って、強い分類と弱い分類を分けることができます。
効率的な使い方を示すコードサンプルを以下に示します。
Mat img;
vector<double> weights;
vector<int> levels;
vector<Rect> detections;
CascadeClassifier model("/path/to/your/model.xml");
model.detectMultiScale(img, detections, levels, weights, 1.1, 3, 0, Size(), Size(),
true);
cerr <<
"Detection "
<< detections[0] <<
" with weight "
<< weights[0] << endl;
 
 
 
◆
detectMultiScale()
| CV_WRAP void cv::CascadeClassifier::detectMultiScale
 | 
( | 
InputArray | 
image,
 | 
 | 
 | 
CV_OUT std::vector<
Rect
> & | 
objects,
 | 
 | 
 | 
double | 
scaleFactor
=
1.1,
 | 
 | 
 | 
int | 
minNeighbors
=
3,
 | 
 | 
 | 
int | 
flags
=
0,
 | 
 | 
 | 
Size | 
minSize
=
Size(),
 | 
 | 
 | 
Size | 
maxSize
=
Size() | 
 | 
) | 
 | 
 | 
 
入力画像中の異なるサイズのオブジェクトを検出します。検出されたオブジェクトは,矩形のリストとして返されます.
- 引数
 
- 
| image | 
オブジェクトが検出された画像を含む CV_8U 型の行列. | 
| objects | 
各矩形が検出されたオブジェクトを含む矩形のベクトルで,その矩形は部分的に元の画像の外側にあるかもしれません. | 
| scaleFactor | 
各画像スケールにおいて、画像サイズをどの程度縮小するかを指定するパラメータです。 | 
| minNeighbors | 
各候補の矩形を保持するために、何個の隣接矩形を持つべきかを指定するパラメータ。 | 
| flags | 
古いカスケードに対して,関数 cvHaarDetectObjects と同じ意味を持つパラメータ.これは,新しいカスケードでは利用されません. | 
| minSize | 
可能な最小オブジェクトサイズ.これよりも小さいオブジェクトは無視されます. | 
| maxSize | 
可能な最大オブジェクトサイズ.これよりも大きいオブジェクトは無視されます.もしmaxSize == minSizeモデルはシングルスケールで評価されます。 | 
 
この関数は,TBB ライブラリを用いて並列化されます.
- 覚え書き
 
- 
- (Python) カスケード分類器を用いた顔検出の例は,opencv_source_code/samples/python/facedetect.pyにあります.
 
 
 
 
◆
load()
| CV_WRAP bool cv::CascadeClassifier::load
 | 
( | 
const String & | 
filename
 | 
) | 
 | 
 
ファイルから分類器を読み込みます。
- 引数
 
- 
| filename | 
分類器が読み込まれるファイルの名前.このファイルには,haartrainingアプリケーションによって学習された古いHAAR分類器や,traincascadeアプリケーションによって学習された新しいカスケード分類器が含まれます. | 
 
 
 
◆
read()
| CV_WRAP bool cv::CascadeClassifier::read
 | 
( | 
const
FileNode
& | 
node
 | 
) | 
 | 
 
ノードから分類器を読み込みます.FileStorageノードから分類器を読み込みます.
- 覚え書き
 
- ファイルには,新しいカスケード分類器(traincascadeアプリケーションで学習されたもの)のみが含まれます.
 
 
 
このクラス詳解は次のファイルから抽出されました: