0
 cvCvtColor(frame, hsv_frame, CV_BGR2HSV);
 cvInRangeS(hsv_frame, hsv_min, hsv_max, thresholded);

私は青いボールを追いかけようとします。最大値と最小値を決定するには、カメラで撮った写真を開き、MSペイントを開いて、Hで(180/240)の結果を2倍にし、(255/240)SとLの結果を2倍にします。次の値:

108 113 115 112 105 H
145 40  107 129 143 S
97  129 96  102 124 L

だから私は次の値を選びました:

CvScalar hsv_min = cvScalar( 105, 40, 96 );
CvScalar hsv_max = cvScalar( 115, 140, 130);

しかし、私がそれをフォローしようとすると、彼に会うことはほとんどありません。私は間違った計算ですか?または、結果を改善するために何ができますか?

4

1 に答える 1

2

まず、なぜ画像をに変換してからHSV話し合うのHSLですか?私が間違えなければ、それらは異なる色空間です。

HSV色空間を使用して青色を判別するには、次の範囲を使用します。

Min (H/S/V):  90,  50,  50
Max (H/S/V): 130, 255, 255

また、このオンラインコンバーターはあなたを助けるはずです。

また、コードHueを使用して画像をHSVに変換した後の値は、範囲[0..180]にあることを忘れないでください。使用すると、範囲[0..360 ]が得られます。CV_BGR2HSVCV_BGR2HSV_FULL

于 2012-07-16T12:33:27.963 に答える