画像から水着を除去して裸に見える画像を作る【Android/OpenCV】

こっちの記事で既にお伝えしたように、

水玉コラを作るAndroidアプリを作ったわけです。

http://surfrider2.dispatch-site.com/?p=37

 

で、このアプリは以下の様な機能を持ってます。

※前提として「ユーザに入力してもらったマスク(水着の範囲)」を使ってます。

 

1、 マスクの範囲を避けて、水玉模様に繰り抜いたフィルタ画像を作る機能。

2、 マスクの範囲を完全に除去して、周りのピクセルが持つ色で補完する機能。

 

1のほうは、いわゆる「水玉コラ」ですね。

2のほうは、「水玉コラ」の中でも、特に「擦りガラス風」とか言われる画像を作れます。

 

今回は2の機能を紹介します。

その部分のソースを晒します。

</pre>
ctxt.destCanvas = new Canvas(ctxt.dest);
 Mat matBody = Utils.bitmapToMat(ctxt.mask.copy(Bitmap.Config.ARGB_8888, true));
 Imgproc.cvtColor(matBody, matBody, Imgproc.COLOR_RGBA2GRAY, 1);
 Mat matSrc = Utils.bitmapToMat(ctxt.src.copy(Bitmap.Config.ARGB_8888, true));
 Imgproc.cvtColor(matSrc, matSrc, Imgproc.COLOR_RGBA2RGB, 3);

Mat matMask = new Mat();

// マスクを膨張
 Imgproc.morphologyEx(matBody, matMask, Imgproc.MORPH_DILATE, new Mat(), new org.opencv.core.Point(-1, -1), 3);

// 不要部分を除去(周りの色で補完)
 Imgproc.inpaint(matSrc, matMask, matBody, 15.0, Imgproc.INPAINT_NS);

Imgproc.GaussianBlur(matBody, matMask, new Size(31, 31), 0, 0);

Mat matMaskRGBA = new Mat();
 Imgproc.cvtColor(matMask, matMaskRGBA, Imgproc.COLOR_RGB2RGBA, 4);

matSrc.release();
 matMask.release();
 matBody.release();

Utils.matToBitmap(matMaskRGBA, ctxt.mask);

matMaskRGBA.release();
<pre>
 

Leave a Reply

  プロフィール  PR:無料HP  ふくやま自動車学校  電気工事士  エアスト  中古ホイール 京都  タイヤ マーチ 格安  ゲーム 専門学校  ホイールキャップ  大特免許 格安  翡翠  水まわりリフォーム 千葉  音楽 専門学校 福岡  タイヤの持込み歓迎  マンションリノベーション