SUGARSPOT

Androidアプリ、WEBサービス開発の SUGARSPOT  |Androidブログ「Androidのことなんだけど」もやってます

2011年6月17日金曜日

FaceDetectorで顔を認識しなくて困った

いまAndroidアプリで顔認識をやっている訳なのですが、微妙な事で顔を認識したり、しなかったりと謎のハマリかたをしてしまいました

顔を認識せずによくあるのが、BitmapをARGB_8888にしてしまっている時
こんな時はRGB_565にすればいい
この情報は色々な所で目にするので、あまり困らないと思います

で、今回困ったのは、レイアウトで、認識させた画像(もしくは、近辺の部品)に対してpaddingを指定した場合に、認識が失敗したり、しなかったり
同じプロプログラムでも、実機では認識するけどエミュレーターでは認識しない
その逆に、実機では認識しないけど、エミュレーターでは認識するなど

で、悩んで色々とGoogle先生に聞いてみたりしたけど解決策が見つからず
そこで、初心に戻りFaceDetectorのAPI Docを見てみました

すると、こう書かれています(FaceDetector)
Creates a FaceDetector, configured with the size of the images to be analysed and the maximum number of faces that can be detected. These parameters cannot be changed once the object is constructed. Note that the width of the image must be even.

前半部分は良いとして、後半の
Note that the width of the image must be even.

をちゃんと読んでいませんでした。。。
ちゃんと「横幅は偶数じゃないとダメですよ」って書いてあります

今回のアプリは、画像を表示サイズにリサイズしていたので、利用環境によって画面サイズ(画像サイズ)が変わってしまい、認識したり、しなかったりした訳ですね
paddingの入れたり、外したりも同様にサイズが変わってしまうからですね

今回の教訓は「ちゃんと公式のドキュメントはみるべし!」ですね 。"ちゃんと"の部分が重要です

0 件のコメント:

コメントを投稿