ぼくだってブログ書くねん

意識向上を目指した意識高い系ブログです。本業はなんちゃって電気設計業務です。

Androidでカメラ連携+OpenCVなアプリについて

あらまし

うっかり引き受けてしまったAndroid開発?ボランティア。
いや、開発ボランティではなくプロジェクト管理ボランティアだった。

しかし、現状として自分も開発にコミットしていかなければならない状況っぽいので
ブログのネタにしつつ、今日一日作業してみようと思う。

発端はAndroidのカメラアプリを作ろう!という安易な発想から始まった。

やりたいことは以下
- カメラ撮影
- 画像解析(撮影画像のRGB値抽出)

腐るほど世の中にカメラアプリあるし、有志もいっぱいいるはずだから簡単簡単!!!

これが地獄への始まりだった。

Android開発におけるカメラ使用方法

調べたらすぐに出てくるが現在はCamera2 APIなるものがある。
これはGoogleが提供する標準のカメラAPIだ。

一方で、日頃色々なアプリ使っていて目にする標準カメラをアプリ内から呼び出す方法。

簡単に以上の2つの方法がカメラアプリを作るにあたって簡単に思い浮かぶ。

最強・最凶・最難?のCamera2 API

最近のAndroidカメラ事情を調べるとCamara2 APi必ず行き着く。
Andriod 5.0から使われだした。

Camera2 APiを用いることでカメラをアプリケーションから細かく設定できる。
このAPIによって近年のバースト撮影やRaw撮影機能が実現されているようである。

もちろんRGB(YUV)データならお茶の子さいさい?で取れるっぽい。

ただし、自由にカメラを制御できるようになった反面、
コードの記述や電気的なシーケンス制御を正しく精密に行う必要がある。

これが曲者で、ちょーっと色を出してISOを固定でwww撮影できるようにしよっ
と思ったらFailedの連続である。

よっぽどGoogleのリファレンスを読み込まないとムリムリムリのカタツムリ。

Camera2 APIをいい感じに実装しようと思うと職人レベルで普通にお金が発生する技量と時間が必要である(たぶん)。

その証拠って訳でもないが、ググってもまともに動くレベルで解説してる記事が殆ど無い。
日本語の記事では解説しているのはかなりの熟練者で「1」だけ話してあとは行けるよね!ってものがちょっとだけ。

そのあとが全然無理なんだけど!?っていう私みたいな情弱にはレも足も出ない。

英語記事でもstackoverflowでうまくいかないんだけど???で解決しないままのものばっかりだ。
How to control iso manually in camera2, android
(じつは解決してるのか?自分でやってみたけどうまく動かない...)

サンプルプロジェクトCamera2Basicの中身を解説してる記事もあるけど、 Googleのコメントを翻訳してるだけだったりするし、
そもそもカメラの制御を知っとかないと改編も難しい。

一個人がCamera2 APIをイジるなんてやっぱ無理。
天才解説記事書いてくれ頼む状態なので諦めました(敗北主義者)

Android標準カメラアプリとの連携

アプリ内から端末標準のカメラアプリを読み込むのよく見かける。。。よね?
ってことで、これを実装すればとりあえOKかな。

ってことでぐぐったらあるやん!あるやん!
しかもごっつシンプルに実装できるみたいやん!

ここでアップされてるサンプルがとっても参考になりました。
まぁ記事は有料会員にならない全部見れないようだけど、サンプル見れれば十分です。

グラシアス、アミーゴ!

画像解析方法としてのOpenCV

RGB見るならOpenCVが一般的?
最近、PythonでもOpenCV使ったから馴染みもある。

ぐぐってみる先輩たちがたくさんいる!
いける!いけるぞぉ!!!

ってことで

Androidで標準カメラ連携+OpenCVで撮影データのRGBを抽出アプリの開発に着手したい