1

次の (キャニー) 画像を考えると、上部の水平線全体の開始/終了エンドポイントを取得したいと思います。

私はopencvのHoughLineP機能を試しましたが、全行ではなくセグメントを取得します。これは、カメラのキャリブレーションの歪みが原因であることがわかりました。

  • 曲がりくねった歪みに関して、より寛容な他のテクニックはありますか?

  • thetaパラメーター (HoughLineP関数)はどのように機能しますか?

  • または、互いに近いポイントを結合するための良い方法は何ですか(何らかの形で同様の角度で)

オリジナル:

オリジナル

コード:

Mat scene = imread("houghLines.png", 0);

vector<Vec4i> lines;
HoughLinesP(scene, lines, 1, CV_PI/180, 40, 100, 20 );

cvtColor(scene, scene, COLOR_GRAY2BGR); scene *= 0.5; // convert to colour

auto colours = generateColours((int)lines.size());
for(int i = 0; i < lines.size(); i++) {
    auto l = lines[i];
    line(scene, Point(l[0], l[1]), Point(l[2], l[3]), colours[i], 1, CV_AA);
}

imshow("scene", scene);
imwrite(getTempFilename(), scene);
waitKey();

結果:

結果

4

0 に答える 0