• OpenCV于1999年由Intel建立,现在由Willow Garage提供支持。OpenCV是一个基于BSD许可证授权(开源)发行的跨平台计算机视觉库,可以运行在Linux、Windows和Mac OS操作系统上。它轻量级而且高效——由一系列 C 函数和少量 C++ 类构成,同时提供了Python、Ruby、MATLAB等语言的接口,实现了图像处理和计算机视觉方面的很多通用算法。 一个叫Robert Eisele的德国人写了一个PHP扩展facedetect,只封装了两个函数face_detect和face_count。

    1. 安装依赖包 OpenCV安装之前,必须安装好以下依赖包:(已经安装过的可以跳过)
      yum install -y pkgconfig libpng zlib libjpeg libtiff python
      
    2. 下载安装opencv

      wget http://sourceforge.net/projects/opencvlibrary/files/opencv-unix/1.1pre1/opencv-1.1pre1.tar.gz/download
      tar xvzf opencv-1.1pre1.tar.gz
      cd opencv-1.1.0/
      ./configure
      make && make install
      
    3. 下载安装facedetect扩展

      wget http://www.xarg.org/download/facedetect-1.0.0.tar.gz
      tar xvzf facedetect-1.0.0.tar.gz
      cd facedetect-1.0.0/
      /data/soft/php/bin/phpize ./configure   #根据自己的phpize位置修改 
      ./configure --with-php-config=/data/soft/php/bin/php-config  #根据自己的php-config位置修改 
      make && make install
      
    4. 在php.ini中加入facedetect扩展在php.ini中加入下面代码并重启服务

      extension=facedetect.so
      
    5. 下载需要用的的面部xml数据: haarcascade_frontalface_alt.xml

    6. 面部识别应用

    <?php
    $img = 'test.jpg';
    $arr = face_detect($img, 'haarcascade_frontalface_alt.xml');
    
    $pic_dst = array();
    if(is_array($all)){
    $im = imagecreatefromjpeg($img); 
    echo "<img src='".$img."'><br />";
    foreach ($all as $k => $v){
    $dst_pic = $k.'.jpg';
    $x = $v['x'];
    $y = $v['y'];
    $w = $v['w'];
    $h = $v['h'];
    $newim = imagecreatetruecolor($w, $h); 
    imagecopyresampled($newim, $im, 0, 0, $x, $y, $w, $h, $w, $h);
    imagepng($newim,$dst_pic);
    imagedestroy($newim); 
    $pic_dst[] = $dst_pic;
    }
    imagedestroy($im);
    }
    
    foreach($pic_dst as $key => $value) {
    echo " => <img src='".$pic_dst[$key]."'>";
    }
    ?>
    
    1. 随手找了张人比较多的图片,电影《越狱》的宣传图做测试,11个人识别出12张脸来,还是有识别错误的。