6

Opencvでハフ変換関数を呼び出して生成された線のベクトルがあり、それらを画像座標に変換し直す必要があります。Opencvの公式ドキュメントからこのサンプルコードを見つけましたが、理解できません。誰か説明してもらえますか?

for( size_t i = 0; i < lines->size(); i++ )
{
    float rho = lines->at(i)[0]; //[0] is rho
    float theta = lines->at(i)[1]; //[1] is theta
    double a = cos(theta), b = sin(theta);
    double x0 = a*rho, y0 = b*rho;
    cv::Point pt1(cvRound(x0 + 1000*(-b)),
              cvRound(y0 + 1000*(a)));
    cv::Point pt2(cvRound(x0 - 1000*(-b)),
              cvRound(y0 - 1000*(a)));
    line( *mat, pt1, pt2, Scalar(255,0,0), 1, 8 );
}

このラインをやっている1000は何ですか?

pt1(cvRound(x0 + 1000*(-b)), cvRound(y0 + 1000*(a)))

さらに、なぜpt2に負のyコードがあるのですか?たとえば、最初の行が(rho、theta)形式の(0,0)の場合、pt2は(0、-1000)になります。

ありがとう、

4

1 に答える 1

4

これが、法線の計算が機能する方法です。この記事をご覧ください-線を法線から傾斜切片に変換して、数学を通過させます。

于 2011-03-17T17:31:09.960 に答える