Hatena::Groupiphone-dev

kotamzの日記 このページをアンテナに追加 RSSフィード

2009-09-22

EdgeCamera(OpneCVを使用したカメラアプリ)

23:44 | EdgeCamera(OpneCVを使用したカメラアプリ) - kotamzの日記 を含むブックマーク はてなブックマーク - EdgeCamera(OpneCVを使用したカメラアプリ) - kotamzの日記 EdgeCamera(OpneCVを使用したカメラアプリ) - kotamzの日記 のブックマークコメント

f:id:kotamz:20090922232847g:image:left

EdgeCameraというiPhoneのカメラアプリを9/21にリリースしました。EdgeCameraはカメラで撮影した画像をOpenCVを使って左の画像のように変換するアプリです。アプリのリリースは今回が初めてだったので、いろいろ判ったことがありました。主に技術以外の事をメモとして書いておきます。これから初めてのアプリを開発される方のご参考になれば。(画面は開発中のものです。一番下にも幾つかサンプルを載せてあります)

OpenCViPhoneアプリに組み込む

オライリーから出版されている「詳解 OpenCV」を参考にしました。(この本を参考にしてOpenCViPhoneで動かしてみたら、変換した画像がちょっと面白かったので、そのままアプリにしてみたのがEdgeCameraです)原書には無いのですが、翻訳版には「付録A iPhone OSへのOpneCV/FaceDetectionの移植と高速化」という章が追加されており、ここを参考にすると、とても簡単にOpneCVをiPhoneアプリに組み込めます。

具体的には、以下のディレクトリごとソースファイルをプロジェクトに追加してビルドするだけです。

 cxcore/src

 cxcore/include

 cv/src

 cv/include

また、高速化の手法なども詳しく載っていますので、そちらは書籍でご確認ください。画像処理に興味のある方には、すごくおすすめです。

EdgeCameraでは画像を以下のように変換します。

元画像(UIImage)を縮小 → OpenCV用画像(IplImage) → グレースケール → エッジ抽出 → カラー → UIImage

この中で、変換に費やす時間のほぼ全ては縮小処理です。このため、撮影から最初の表示までは2秒ほどかかりますが、表示後のスライダーによる調整(エッジ抽出のしきい値変更)はリアルタイムに処理できました。

ツールバーアイコンを決める

標準のカメラアイコンでカメラを直接呼び出すとリジェクトされるそうです。

カメラアイコンをタップしたらアクションシートを表示して、カメラかアルバムかを選択するのが正しい動作ですが、繰り返し撮影したいときに1アクション余計なので、これは嫌でした。

ということで、標準のアイコンガイドラインと一致しない可能性があり危険なので、EdgeCameraではオリジナルのアイコンを使っています。どのセットにも沢山のアイコンが入っているのですが、"Save"ボタンの代替えになるアイコンがなかなか見つからずに困りました。

※値段は2009/9/22現在。

アプリアイコンを作成する

これが一番困りました。僕はプログラマで、デザインは出来ません。試しにイラストレーター体験版で2時間ほど頑張ってみましたが、出来上がったアイコンを見てあきらめました。こういうことはプロにお願いするのが一番ですね。

今回はLancersに15,000円で依頼しました。早くリリースしたかったので、期限は24時間以内で。。。

すると、こんなに短い期間にもかかわらず、最終的には20件のご提案をいただきました。どのアイコンもすばらしく、すごくうれしかったです。うれしい反面、採用しない19件はお断りすることになるので、これは精神的に結構つらかったです。ご提案頂いた方々には、ここであらためてお礼を申し上げます。

EdgeCameraのアイコン作成依頼の結果

サブミット時には同じデザインで2サイズ(57×57、512×512)の画像が必要になります。アイコンの形に整形したり光沢を付けたりする処理はツールが勝手にやってくれるので、成果物は四角い画像でOKです。

メールアドレスクレジットカードがあれば、すぐに依頼できます。

作成してもらった画像ファイルをicon.ongとしてプロジェクトのResourcesに追加すればアイコンが表示されます。

起動画面を設定する(起動中に表示される画像)

アイコンのデザイン時に起動画面のデザインも依頼すればよかったと、あとで気がつきました。

もう遅いので、EdgeCameraではツールバーや背景色は同じで、ボタン類は配置していない別のプロジェクトを作成し、このスクリーンショットを起動画面にしています。また、ここにラベルを追加して、OpneCVのライセンス文も表示しています。

スクリーンショットはオーガナイザで撮影可能です。さらに起動画面(Default.png)としてプロジェクトに追加してくれる機能もついています。ここで気をつけることは、画面上部のステータスバーです。ステータスバー付きのスクリーンショットが起動画面になると格好悪い(リジェクトされるかも?)ので、先ほど作成したプロジェクトのステータスバーを非表示に設定しておくか、撮影したスクリーンショットのステータスバーを画像処理ソフトなどで消しておきます。

サンプル画像や紹介文を準備する

アプリの紹介用の画像を最大5枚まで設定できるので、予め準備しておきます。

今回はカメラアプリなので、操作画面のスクリーンショットと撮影結果の画像にしました。

サイズが決まっているので、合わない場合は画像処理ソフトで変換してサイズを合わせます。

紹介文は英語と日本語で書きます。英語の方は、サンプル画像を見れば解ってもらえそうなので、何となく伝わればいいやと思ってGoogle翻訳で書きました。次回は翻訳を依頼したいと思っています。

iTunesConnectでサブミットして結果を待つ

重要:デフォルトの言語を訊かれるので、英語にします。そして、あとで日本向けの紹介文のみを差し替えます。

ここで日本語を選択すると、全ての国に日本語の紹介文が表示されてしまい、1つ1つ差し替えることになります。

(これを警告してくれた先人たちに感謝しています)

審査にどれくらいかかったか、時系列に書いてみます。

  • 09/10 最初のサブミット
    • この間、気になる部分を修正したりして、何度か差し替え
  • 09/13 最後のサブミット
    • この間、サンプル画像などを何度も差し替え。販売対象国なども変更しまくる。その他の情報もいろいろ変更。
  • 09/21 販売開始

という感じで、9/13に最後のサブミットをしてから1週間ほどで販売開始できました。ただし、同じ日にサブミットした同僚のアプリはまだ審査中のようです。ネットワークアクセスしたりするので、審査に時間がかかるのかも。

販売開始後(現在)

twittergoogleアプリ名を検索したりしています。でも、あんまりヒットしません。宣伝はtwitterでつぶやいただけなので当たり前か(^^;

順位はカメラアプリ76位くらいです。(9/22 17:00現在)

25件ずつ4ページまで表示される、4ページ目の1件目です。ちょっとずつ上がってきてるので、3ページ目に入るのが楽しみです。

(9/22 21:50)65位になって、3ページ目に入りました!

(9/23 20:00)30位になって、2ページ目に入りました!

現時点でレビューを1件書いて頂いています。また、twitterでも面白いと言って頂いた方がいました。ありがとうございます!

f:id:kotamz:20090922170216g:image:left

f:id:kotamz:20090922170217g:image:left

f:id:kotamz:20090922170214g:image:left

f:id:kotamz:20090922170218g:image:left

kotamzkotamz2009/09/22 23:52はてなダイアリーとこちらの日記は別物なのですね。はてなダイアリーに書くと、こちらにも反映されるのかと思ってました(汗 今回はコピペしちゃいます。