0

Open CV プログラミングを使用してシステム CAM を開くと、黄色のオブジェクトを検出します。Open CVでのオブジェクト認識のチュートリアルから助けを得ましたが、このコード行については明確ではありません。わからない。私が使用している以下のコード行について詳しく教えてください。

cvInRangeS(imgHSV, cvScalar(20, 100, 100), cvScalar(30, 255, 255), imgThreshed);

プログラムの他の部分:

CvMoments *moments = (CvMoments*)malloc(sizeof(CvMoments));
    cvMoments(imgYellowThresh, moments, 1);

    // The actual moment values
    double moment10 = cvGetSpatialMoment(moments, 1, 0);
    double moment01 = cvGetSpatialMoment(moments, 0, 1);
    double area = cvGetCentralMoment(moments, 0, 0);
4

1 に答える 1

1

ドキュメントを読むのはどうですか?

inRange

配列要素が他の2つの配列の要素の間にあるかどうかを確認します。

そして実際、その記事には明確な説明が含まれています。

また、2つのcvScalarは、黄色がかった値の下限と上限を表します。

2番目のコードについて。その計算から、作者はオブジェクトの中心とその正方形を見つけます。記事からの引用:

最初にモーメント構造にメモリを割り当て、次にさまざまなモーメントを計算します。次に、モーメント構造を使用して、2つの1次モーメント(moment10とmoment01)と0次モーメント(面積)を計算します。

モーメント10を面積で割ると黄色いボールのX座標が得られ、同様にモーメント01を面積で割るとY座標が得られます。

于 2013-01-19T11:21:08.373 に答える