狠狠撸

狠狠撸Share a Scribd company logo
笔贬笔でも颜认识してみようぜ!!




    株式会社ソフトレット
     山崎誠 (@letkun)
                     1
? 株式会社ソフトレットの紹介



   WEBアプリケーション(主にPHP)の開発

   スマホアプリの開発 (Android、iPhone、iPad)




          softolet.com



          (株)ソフトレット 山崎誠 @letkun      2
今日はPHPから画像の顔認識を
試してやってみたいと思います!




   (株)ソフトレット 山崎誠 @letkun   3
まず「OpenCV」とは




  米 Intel 社で開発された画像処理?画像認識用の
            C言語ライブラリです。




         (株)ソフトレット 山崎誠 @letkun   4
まず準備するもの




(株)ソフトレット 山崎誠 @letkun   5
PHPを動かすサーバー




 (株)ソフトレット 山崎誠 @letkun   6
? 今回サーバーはAmazonWebService の
  EC2-microインスタンスを利用しました。

? 1時間あたり 0.027$
? 1か月間起動していても、たったの1,566円          (78円換算)




今回のような「お試し」環境を作成する場合等に便利です。



          (株)ソフトレット 山崎誠 @letkun             7
それ以外に、今回準備したもの

? Apache+ PHP 5.3
? OpenCVをビルドする為のライブラリ
    zlib、libjpeg、libpng、jasper、及び
    それぞれのdevel

? OpenCV 本体 (今回は 1.0,0)

? Facedetect (PHP用のExtension)




             (株)ソフトレット 山崎誠 @letkun   8
php.ini に以下を追加して、Apacheを再起動すれば
  使えるようになります。


 ; Directory in which the loadable extensions (modules) reside.
 ; http://www.php.net/manual/en/ini.core.php#ini.extension-dir
 ; extension_dir = "./"
 extension_dir = "/usr/lib/php/modules/"

 extension = face_detect.so

 ; Whether or not to enable the dl() function. The dl() function does NOT work
 ; properly in multithreaded servers, such as IIS or Zeus, and is automatically
 ; disabled on them.
 ; http://www.php.net/manual/en/info.configuration.php#ini.enable-dl
 enable_dl = Off




                        (株)ソフトレット 山崎誠 @letkun                                     9
ちなみに結構ネット上に
 やり方転がってます。




 (株)ソフトレット 山崎誠 @letkun   10
さっそく使ってみましょう




  (株)ソフトレット 山崎誠 @letkun   11
以下のような画面を2つ作成しました。




  画像アップロード用                      顔認識して、結果を
                                 顔認識して、結果を
  画像アップロード用                       出力するPHP
     HTML
     HTML                         出力するPHP
                画像をPOSTする




         (株)ソフトレット 山崎誠 @letkun               12
phpでのポイントは以下のface_detect()を
  CALLする部分のみです。 (簡単)

 // POSTされた画像の取出し
 if (is_uploaded_file($_FILES["image1"]["tmp_name"])) {
         $upfile = "./upfile/".$_FILES["image1"]["name"];
         move_uploaded_file($_FILES['image1']['tmp_name'], $upfile);
 } else
     exit();

 $file_path = $upfile;    // upload画像を入力する
 $cascade = ‘./haarcascade_frontalface_alt.xml’; // 正面顔検出器

 $faces = face_detect( $file_path, $cascade );

 // 以降で $facesの内容を処理する
 // $faces は、連像配列で、検出した顔の数分 $f[‘x’]、 $f[‘y’]、
 // $f[‘width’]、 $f[‘height’] を返します。




                     (株)ソフトレット 山崎誠 @letkun                             13
それでは、実际に画像を笔翱厂罢してみます




      (株)ソフトレット 山崎誠 @letkun   14
①手島優さん。

いつもお世話になってます。m(__)m




   (株)ソフトレット 山崎誠 @letkun   15
②2名の場合、麻里子様(AKB)

 やっぱり、かわいい???




  (株)ソフトレット 山崎誠 @letkun   16
③2名でいけるなら???础碍叠大势(12名)

     もう!最高ですね☆




     (株)ソフトレット 山崎誠 @letkun   17
④アニメはどうなのか?

 世紀末救世主伝説




(株)ソフトレット 山崎誠 @letkun   18
感想と考察




(株)ソフトレット 山崎誠 @letkun   19
? OpenCVは1.0.0 を使用したが、本来2.0以降を使用し
  たかった。
  ビルド上の問題で断念。

? 検出器(XML)の調整も必要だが、検出が今一甘い。

? サーバー側で検出するので、スマートフォンや
  携帯からでも組み合わせのシステムを作れるかも?




          (株)ソフトレット 山崎誠 @letkun   20
ご清聴ありがとうございました。




   (株)ソフトレット 山崎誠 @letkun   21

More Related Content

2011-11-24 PHP勉強会 LT用資料