Androidアプリ「Face Parts Randomizer」をリリースしました!

www.youtube.com

play.google.com

何ができる?

  • 顔パーツを認識し、ランダム配置する(位置・スケール)
  • アルバムの画像を読み込める

技術スタック

  • Unity
  • OpenCV
  • Android

開発の問題点

  • 顔パーツを切り取った後、周辺に灰色のエッジが残る
    • 1pxなので未対応
  • 実機確認はサイクル速度が落ちる。できるだけ避けたい。しかしGallery読み込みなどはやるしかない
  • 画像を貼り付けた時に90度回転されるものがある
    • タブレットのカメラで撮影したもの等
    • WebでDLした芸能人の画像は大丈夫
    • JPEG Exif 回転情報を見て回転するか決めればいい

Unity

  • Stan's Asset実装中、AwakeでDelegateするのと、uGUI OnClickにアタッチするので前者しか上手く動かない
    • OnClickを設定する方法は複数あるが、違いがあるようだ。サンプルに合わせよう
  • 顔パーツの貼り付け
    • OpenCV上で貼り付けてもよかったがUnity上のQuadとして貼り付け・移動した
    • Unityでの処理は慣れているのでスイスイ実装できる。OpenCVでしかできないところだけ任せるのが良い

OpenCV

  • C++, Python, Java, Androidなどの情報もヒットするので検索しづらい
  • Mat, Rect, Pointなどの概念を理解する必要がある
  • なのでやりたいことがシンプルでも実装には時間がかかる。調べて正しく動かす所に時間がかかる

OpenCV 画像タイプ

  • CvType.CV_8UC3
    • マスクは1C, 画像は3C。4Cが混ざっているとマスク処理がうまく動かなかったりする

行動すればネタに当たる

  • これを作ってみて色々落とし穴というか、解決が必要だった
  • それらは解決された後、1つずつ分離されて技術記事となった

女性の無料画像URL(感謝)

https://www.pakutaso.com/20180503145post-16290.html

開発期間

  • 1週間。思ったよりかかった
  • OpenCVで何ができるか・どう書けばいいか・ちゃんと動いていることの確認方法
  • これらが新しい部分で、これらの習得に時間がかかっている

OpenCVに慣れるにはPythonが良い説

  • 調べていた時、結構Python+OpenCVが引っかかった
  • 画像の一部の取得も配列のように切り取れるようだ
  • Unityと違ってコンパイル時間がない
  • ロジックを書けたらUnityなりAndroidなりC++なりに書き直せばいい
  • 私も7年前くらいにPython+OpenCVで書いたことがあり、使いやすかった印象
  • 何ができるか・どう書けばいいかはPythonで学ぶと良いかも

アプリサイズ

  • 画像はほぼないが57MB
  • UnityのVMで少し重くなるとはいえ、殆どはライブラリ、OpenCVだろう
  • 50MB越えるとダウンロード躊躇するよね
  • ネタアプリは20MBくらいにしたい

感想

  • 「1円にもならない」そう思うこともあった
  • それを作れることが自由でもあり、豊かであるとも言える
  • Google Playで新しいアプリを探そうとするユーザーってどれくらいいるのだろう?
    • かなり見つけてもらいづらそう・・・

詳解 OpenCV 3 ―コンピュータビジョンライブラリを使った画像処理・認識

詳解 OpenCV 3 ―コンピュータビジョンライブラリを使った画像処理・認識

  • 作者: Gary Bradski,Adrian Kaehler,松田晃一,小沼千絵,永田雅人,花形理
  • 出版社/メーカー: オライリージャパン
  • 発売日: 2018/05/26
  • メディア: 単行本(ソフトカバー)
  • この商品を含むブログを見る