DetectMultiScaleに渡されるパラメーターを理解できません。一般的な構文はdetectMultiScale(image、rejectLevels、levelWeights)であることは知っていますが、パラメーターrejectLevelsおよびlevelWeightsはどういう意味ですか?そして、オブジェクトを検出するために使用される最適値は何ですか?
これを使って目の瞳孔を検出したい
コード例はここにあります: http://docs.opencv.org/3.1.0/d7/d8b/tutorial_py_face_detection.html#gsc.tab=0
パラメータの説明に関しては、古いパラメータ定義を引用している可能性がありますが、実際には次のパラメータに直面している可能性があります。
ここでは、これらのパラメーターに関する素晴らしい説明を見つけることができます: http://www.bogotobogo.com/python/OpenCV_Python/python_opencv3_Image_Object_Detection_Face_Detection_Haar_Cascade_Classifiers.php
次のような顔と目の適切な事前学習済み分類子セットを取得してください
これらのパラメータのうち、4つのパラメータにさらに注意を払う必要があります。
scaleFactor
–各画像スケールで画像サイズをどれだけ縮小するかを指定するパラメーター。基本的に、スケールファクターはスケールピラミッドの作成に使用されます。さらに説明すると、モデルにはトレーニング中に定義された固定サイズがあり、XMLに表示されます。これは、顔のこのサイズが存在する場合、画像で検出されることを意味します。ただし、入力画像のサイズを変更することで、大きな顔を小さな顔にサイズ変更して、アルゴリズムで検出できるようにすることができます。
1.05がこれに適した値です。つまり、サイズ変更に小さなステップを使用します。つまり、サイズを5%縮小すると、検出用のモデルと一致するサイズが見つかる可能性が高くなります。これは、アルゴリズムがより徹底的であるため、アルゴリズムの動作が遅くなることも意味します。検出を高速化するために、最大1.4に増やすことができますが、一部の顔を完全に見失う危険があります。
minNeighbors
–各候補長方形が保持する必要のある近傍の数を指定するパラメーター。このパラメーターは、検出された顔の品質に影響します。値が大きいほど検出結果は少なくなりますが、品質は高くなります。 3〜6が良い値です。
minSize
–可能な最小オブジェクトサイズ。それより小さいオブジェクトは無視されます。このパラメータは、検出するサイズを決定します。あなたが決める!通常、[30、30]は顔検出の良いスタートです。
maxSize
–可能な最大オブジェクトサイズ。これより大きいオブジェクトは無視されます。このパラメーターは、検出するサイズを決定します。もう一度、あなたはそれを決めます!通常、手動で設定する必要はありません。デフォルト値では、顔のサイズに上限なしで検出することを想定しています。
OpenCV Class List docs は、すべてのC++およびPythonメソッドの説明です。
cv :: CascadeClassifier detectMultiScale の場合は次のようになります。
detectMultiScale
Python:
objects = cv.CascadeClassifier.detectMultiScale(image[, scaleFactor[, minNeighbors[, flags[, minSize[, maxSize]]]]]
パラメータ:
image Matrix of the type CV_8U containing an image where objects are detected. objects Vector of rectangles where each rectangle contains the detected object, the rectangles may be partially outside the original image. scaleFactor Parameter specifying how much the image size is reduced at each image scale. minNeighbors Parameter specifying how many neighbors each candidate rectangle should have to retain it. flags Parameter with the same meaning for an old cascade as in the function cvHaarDetectObjects. It is not used for a new cascade. minSize Minimum possible object size. Objects smaller than that are ignored. maxSize Maximum possible object size. Objects larger than that are ignored. If maxSize == minSize model is evaluated on single scale.
注
- (Python)カスケード分類子を使用した顔検出の例は、opencv_source_code/samples/python/facedetect.pyにあります。
前述のように、サンプルの使用法は OpenCVソースコード から入手できます。文書化された各パラメーターをキーワードとして渡すことができます。
rects = cascade.detectMultiScale(img,
scaleFactor=1.3,
minNeighbors=4,
minSize=(30, 30),
flags=cv.CASCADE_SCALE_IMAGE)