画像から水着を除去して裸に見える画像を作る【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  高梁自動車学校  イラストレーター 専門学校  ガレージ  中古ホイール 茨城  タイヤ オデッセイ 格安  Webデザイナー 専門学校  マフラー 中古  かいなんドライビングスクール  パワーストーン  四街道 リフォーム  音楽 専門学校 福岡  タイヤ 履き替え 豊橋市  名簿屋