何ができる?
- 顔パーツを認識し、ランダム配置する(位置・スケール)
- アルバムの画像を読み込める
技術スタック
- 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 ―コンピュータビジョンライブラリを使った画像処理・認識
- 作者: Gary Bradski,Adrian Kaehler,松田晃一,小沼千絵,永田雅人,花形理
- 出版社/メーカー: オライリージャパン
- 発売日: 2018/05/26
- メディア: 単行本(ソフトカバー)
- この商品を含むブログを見る