PrivacyCamera

From Usipedia
Jump to: navigation, search
笑いドロイド君「僕が何になりたかったのか知ってるよね?僕はただ(個人開発者から見たらすごく閉鎖的なガラケーが普及する)世界の救世主になりたかったんだ。」

日本語

English

撮影した画像から自動で顔を認識し様々な処理を施す事が出来るカメラです。

Contents

ダウンロード

The Blindfold Droid

動作環境

  • Android 1.6 以上

動作確認機種

RAMが100MB以下の端末では恐らく動きません。

Sony Ericsson Xperia X10 完全動作
Sony Ericsson Xperia X10 mini 上に同じ
Samsung Galaxy S 上に同じ
LG Electronics Optimus GT540 上に同じ
Sharp IS01 上に同じ
Toshiba(FUJITSU) REGZA Phone T-01C 上に同じ
Google(HTC) Nexus One まれに致命的なエラーが発生するので動かさないで下さい
HTC Desire HD 上に同じ
Sony Ericsson Xperia arc 上に同じ
HTC Magic HT-03A メモリー不足で不安定

対応言語

  • 日本語 / English / 中文(简体)

使い方

PrivacyCameraGUI.png

起動したらオプションメニューから施したい処理を選択して下さい。

  • 何もしない
  • 任意の画像を上書き
  • 黒い帯の目隠しを上書き
  • 顔にモザイクをかける
PrivacyCameraStart.png

Autofocus ボタンでピントを合わせた後に右上にある「音なし撮影ボタン」か右下にある「音あり撮影ボタン」のどちらかをタップします。

「音なし撮影ボタン」は処理が速いかわりに低画質(ディスプレイのサイズと同じ大きさ)で顔の認識率が低めです。「音あり撮影ボタン」は端末の限界の解像度で写真を取ります(1024x768~1920x1080)。処理が遅いかわりに認識率が比較的高いです。

PrivacyCameraProcessing.png

撮影後は処理中を表すダイアログが開きます。処理が終わるまで待ってください。

PrivacyCameraProcessDialog.png

処理が終わった後はこのようなダイアログが開きます。希望の処理を選んでください。(わざわざ画面をタッチしないと次に進めないようにしたのには盗撮用途に使われる事を防ぐ意味合いもあります)

設定画面の使い方

PrivacyCameraSetting.png

これが設定画面です。「上書きする画像を変更する」を選択すると次の画面に移ります。

PrivacyCameraSelectOverlayAdd.png

オプションメニューから画像を追加出来ます。

PrivacyCameraSelectOverlayDelete.png

アイテムを長くタップするとそのアイテムを削除できます。

撮影画像のサンプル

更新履歴

Version 1.1 (2011/3/27)

  • Android 2.1以上のみに対応していたのを1.6以上なら動くように変更、そのかわり Nexus One では動かせなくなりました
  • 顔の大きさによってモザイクの粗さを変えるように変更
  • エラーメッセージの充実

技術情報

顔認識の方法

FaceDetector を使っています。OpenCV を使えばもっと高速に動作可能だと思います。

参考:Detection using OpenCV library on Sony Xperia(Android 1.6)

Bitmap を扱う時に多発する OutOfMemoryError をどうにかする

  1. BitmpaFactory.Options の inPurgeable と inInputShareable を true にする
  2. 使い終わった Bitmap をGCの対象にするために recycle() する

BitmapFactory.Options inPurgeable

http://developer.android.com/reference/android/graphics/BitmapFactory.Options.html#inPurgeable

If this is set to true, then the resulting bitmap will allocate its pixels such that they can be purged if the system needs to reclaim memory. In that instance, when the pixels need to be accessed again (e.g. the bitmap is drawn, getPixels() is called), they will be automatically re-decoded.
(筆者訳)このオプションが true なら、システムがメモリを要求した時に開放されるような領域に結果の Bitmap を割り当てます。開放された後にその Bitmap のピクセルにアクセスがあった場合(例えば描画されたり、getPixels() が呼ばれた時など)、その瞬間に、自動的に再びデコードされます。

BitmapFactory.Options inInputShareable

http://developer.android.com/reference/android/graphics/BitmapFactory.Options.html#inInputShareable

This field works in conju(n)ction with inPurgeable. If inPurgeable is false, then this field is ignored. If inPurgeable is true, then this field determines whether the bitmap can share a reference to the input data (inputstream, array, etc.) or if it must make a deep copy.
(筆者訳)このオプションは inPurgeable と関連しています。inPurgeable が false ならこのオプションは無視され、true ならこのオプションはビットマップが入力データ(InputStream や配列など)への参照を保持出来るか(つまり、入力データをディープコピーすべきか)どうかを決めます。

Bitmap の処理を JNI には及ばないものの比較的速くする

getPixel, setPixel を使うと遅いので getPixels, setPixels を使うと良いです。

Thanks

Namespaces
Variants
Views
Actions
Categories