OpenCVでの輪郭抽出の処理手順を確認しようと思います。
今までに、OpenCV(JavaCV)での、学習準備と基本的な処理方法の学習を学習しました。
輪郭抽出のことを調べるとPythonでの処理とかアルゴリズムの理論とか、肝心要の部分が見つからず。。。
ようやく。。。
輪郭抽出の処理順序
- 画像を読み込む
- グレースケール(白黒画像)に変更する
- グレースケール画像から輪郭を抽出
大まかに、上のような手順で処理を行うと表示できる。
ただし、グレースケースの画像から輪郭を取得するのでわりかしリアルな白黒だと、外側の枠しか輪郭が取得できない。
ちょっとわかりづらいけど、緑色の線が輪郭です。
そして、これをわかりやすくするには
Imgproc.threshold()
を使用する必要がある。
動かしてみると下のようなイメージです。
ここまできたら、あとはトライアンドエラーで星輪郭が得られるように、下の値を調整してやります。
ちょと画像は違いますが、下のような感じで試しました。
しかし、これは、写真により値を変更しないと欲しい輪郭が取れない。。。
よく見かけるサンプルでは、輪郭がくっきりしているので、問題ないだろうが、ちょっと考え直す必要があると思いました。
→輪郭の取得方法に関して、考え直すと言う意味です。