OpenCV 4.5.3(日本語機械翻訳)
公開メンバ関数 | 静的公開メンバ関数 | 公開変数類 | 全メンバ一覧
cv::CascadeClassifier クラス

Cascade classifier class for object detection. [詳解]

#include <objdetect.hpp>

公開メンバ関数

CV_WRAP CascadeClassifier (const String &filename)
ファイルから分類器を読み込みます。[【詳解】(英語]
CV_WRAP bool empty () const
分類器が読み込まれたかどうかをチェックします.
CV_WRAP bool load (const String &filename)
ファイルから分類器を読み込みます。[【詳解】(英語]
CV_WRAP bool read (const FileNode &node)
ノードから分類器を読み込みます.FileStorageノードから分類器を読み込みます.[【詳解】(英語]
CV_WRAP void 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())
入力画像中の異なるサイズのオブジェクトを検出します。検出されたオブジェクトは,矩形のリストとして返されます.[【詳解】(英語]
CV_WRAP_AS (detectMultiScale2) void detectMultiScale(InputArray image
CV_WRAP_AS (detectMultiScale3) void detectMultiScale(InputArray image
CV_WRAP bool isOldFormatCascade () const
CV_WRAP Size getOriginalWindowSize () const
CV_WRAP int getFeatureType () const
void * getOldCascade ()
void setMaskGenerator (const Ptr< BaseCascadeClassifier::MaskGenerator > &maskGenerator)
Ptr< BaseCascadeClassifier::MaskGenerator > getMaskGenerator ()

静的公開メンバ関数

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アプリケーションで学習されたもの)のみが含まれます.

このクラス詳解は次のファイルから抽出されました: