今回は、とりあえずは、輪郭を取得するfindContours()メソッドを使用して輪郭の情報を取得します。
前回は、画像データの中身を見て画面の白い部分を透明にする処理を実装しました。
なので、作成したアプリの改造をして背景をJavaFXに出力します。
今回の表示する画像は自分の顔です(笑)
具体的には下のような感じです。
この表示した画像の背景部分が顔の輪郭から外の部分。。。
しかし、今回は背景も、顔の内側も全て「白」なので前回のように色指定をして「この色の時はアルファ値を透明にする」というようなことができません。。。
とりあえず輪郭を表示
調べて見ると[findContours(http://labs.eecs.tottori-u.ac.jp/sd/Member/oyamada/OpenCV/html/py_tutorials/py_imgproc/py_contours/py_contours_begin/py_contours_begin.html)]()
を使用して輪郭を取得することができるようです。
とりあえずは実行して見る!
なんかチビクロサンボみたいだな。。。
定数:RETR_TREE
とりあえずは輪郭の表示ができているようです。
この輪郭の表示(データの書き込み)に関しては下のコードで行なっています。
Imgproc.findContours(gray, contours, hierarchy, Imgproc.RETR_TREE, Imgproc.CHAIN_APPROX_SIMPLE);
定数:RETR_EXTERNAL
上の赤文字の部分をImgproc.RETR_EXTERNAL
に変更すると真っ黒になります(笑)
定数:RETR_LIST
同様にRETR_LIST
に変更
定数:RETR_CCOMP
調べて見た定数を使用して表示した白い部分が輪郭として検出されている部分になります。
つまり、輪郭部分の座標が取得できているということです。
第三引数を変えて見る
// CHAIN_APPROX_NONE // CHAIN_APPROX_SIMPLE // CHAIN_APPROX_TC89_L1 // CHAIN_APPROX_TC89_KCOS
結局のところは
よくわかりませんでした。というか輪郭部分を取得(白色)して表示した状態です。しかし肝心の輪郭に関してはいまいちな状態です。ちょいと調査します。。。
でわでわ。。。