画像内の髪の毛を線として検出することに成功しました。出力画像が各髪の毛を線として検出していることがわかります。cvHoughLines2()
メソッドパラメータをとして使用しますCV_HOUGH_PROBABILISTIC
。
今、私はこれらの行を数えたいと思います。出力画像は、各髪に1本または2本の線を示しています。各線は小さな線分で構成されていることがわかります。そのため、それらの総数を直接取得することは困難です。これに関する提案はありますか?
ありがとう、プラディープ
画像内の髪の毛を線として検出することに成功しました。出力画像が各髪の毛を線として検出していることがわかります。cvHoughLines2()
メソッドパラメータをとして使用しますCV_HOUGH_PROBABILISTIC
。
今、私はこれらの行を数えたいと思います。出力画像は、各髪に1本または2本の線を示しています。各線は小さな線分で構成されていることがわかります。そのため、それらの総数を直接取得することは困難です。これに関する提案はありますか?
ありがとう、プラディープ
hough関数は、OpenCV2のベクトルまたはOpenCV1のCvSeqを返す必要があります。あなたは簡単にそれらの長さを取得し、それらを反復することができます。詳細については、OpenCVドキュメントのサンプルコードを参照してください。
実際には、Canny エッジ検出器を使用したほうがよい場合があります。あなたの説明から、ハフ変換よりもいくつかの重要な利点があるようです。
適切なパラメータがあれば、1 本の連続した線で各毛髪を一意に検出できる可能性があります。
これは、関数内の OpenCV で実装されていcvCanny()
ます。threshold1
パラメータとパラメータ (3 番目と 4 番目の引数) の値threshold2
をいじって、検出とトレースを試してみてください。
実際に線を数えることに関しては、これにどのようにアプローチするのが最善かはわかりませんが (Canny 出力は、Hough 変換出力とは多少異なる形式です)、断片化された線のセットよりも、一意のソリッド エッジを使用する方が簡単であることに気付くかもしれません。パラメーター。