以下过程在Ubuntu 8.10下通过:

1.  安装OpenCV

如果只是需要运行,则运行:

apt-get install libcv1 libcvaux1 libhighgui1

如果还需要利用OpenCV进行二次开发,则安装dev包:

apt-get install libcv-dev libcvaux-dev libhighgui-dev

2.  安装人脸识别的PHP扩展facedetect

这个需要phpize工具,在php-dev包中,安装方法:

sudo apt-get install php5-dev

然后是安装facedetect扩展:

wget http://www.xarg.org/download/facedetect-1.0.0.tar.gz
tar -xf facedetect-1.0.0.tar.gz
cd facedetect-1.0.0
phpize
./configure
make
make install

然后在/etc/php5/cli/php.ini 或者 /etc/php5/apache2/php.ini  中增加这个扩展:extension=facedetect.so , 如果设置的是apache的php.ini,需要重启apache服务器。之后就可以通过php -i 或者phpinfo查看facedetect是否启用。扩展增加了两个方法:face_count和face_detect , 分别返回一个图片中识别出来的面部数量和坐标。

3.  编写php程序

一切就绪之后,就可以用php编写人脸识别程序了,下面来个实例,实现下图中标注人脸位置的功能,效果图如下:

opencv-facedetect

php源码:

    $file = "1.jpg";
    $face_xml = "alt.xml";
 
    $dr = face_detect($file, $face_xml);
 
    $image = imagecreatefromjpeg ($file);
    $backgroundcolor = ImageColorAllocate($image, 255, 0, 0);
 
    if ($dr){
        foreach ($dr as $dr1){
            imagerectangle($image,$dr1[x],$dr1[y],
                $dr1[x]+$dr1[w],$dr1[y]+$dr1[h],
                $backgroundcolor);
        }
    }
 
    $newfile="1-new.jpg";
    imagejpeg($image,$newfile);

其中face_xml有很多种可以选,表示不同的识别特征(识别效果也会有差异),可以google一下,或者到这里下载

点击  facedetect.rar 下载本文中的例子(包含php源码和xml文件)。