基于OpenCV的PHP图像人脸识别技术


Posted in PHP onOctober 11, 2009

openCV是一个开源的用C/C++开发的计算机图形图像库,非常强大,研究资料很齐全。本文重点是介绍如何使用php来调用其中的局部的功能。人脸侦查技术只是openCV一个应用分支。
1.安装
从源代码编译成一个动态的so文件。
1.1.安装 OpenCV (OpenCV 1.0.0)
下载地址:http://sourceforge.net/project/showfiles.php?group_id=22870&package_id=16948
#tar xvzf OpenCV-1.0.0.tar.gz
#cd opencv-1.0.0
#./configure
#make
#make install
#make check (检查是否安装全部正确)
提示: 不要指定安装路径,否则后面编译facedetect会找不到OpenCV的路径。
1.2 安装facedetect
下载地址http://www.xarg.org/download/facedetect-1.0.0.tar.gz
#tar xzvf facedetect-1.0.0.tar.gz
#cd facedetect-1.0.0
#phpize && ./configure && make && make install
编译完之后会提示facedetect.so 文件所在的位置。
最后确认在php.ini加入
extension=facedetect.so,重启apache.
2.函数使用
在phpinfo()里检查是否有facedetect这个模块。
从openCV源代码/data/haarcascades/里头取出所有xml文件放在php的执行目录下
//检查有多少个脸型
var_dump(face_count(‘party.jpeg', haarcascade_frontalface_alt.xml'));
//返回脸型在图片中的位置参数,多个则返回数组
$arr = face_detect(‘party.jpeg', haarcascade_frontalface_alt2.xml');
print_r($arr);
3.应用
结合imagick可以将图片做一下应用。因为 face_detect只返回一个矩形参数,包含x,y坐标和w,h长宽参数。下面是我的一个应用demo

<?php 
if($_FILES){ 
$img = $_FILES['pic']['tmp_name']; 
$arr = face_detect($img, ‘haarcascade_frontalface_alt2.xml'); 
//$arr1 = face_detect($img, 'haarcascade_frontalface_alt_tree.xml'); 
if(is_array($arr1)) $all =array_merge($arr,$arr1); 
else $all = $arr; 
$im = new Imagick($img); 
//$draw =new ImagickDraw(); 
//$borderColor = new ImagickPixel('red'); 
//$draw->setFillAlpha(0.0); 
//$draw->setStrokeColor ($borderColor); 
//$draw->setStrokeWidth (1); 
if(is_array($all)){ 
foreach ($all as $v){ 
$im_cl = $im->clone(); 
$im_cl->cropImage($v['w'],$v['h'],$v['x'],$v['y']); 
$im_cl->swirlImage(60); 
$im->compositeImage( $im_cl, Imagick::COMPOSITE_OVER , $v['x'], $v['y'] ); 
//$draw->rectangle($v['x'],$v['y'],$v['x']+$v['w'],$v['y']+$v['h']); 
//$im->drawimage($draw); 
} 
} 
header( “Content-Type: image/png” ); 
echo $im; 
}else{ 
?> 
<meta http-equiv=“Content-Type” content=“text/html; charset=utf-8″ /> 
<form method=“POST” enctype=“multipart/form-data”> 
人脸识别试验:只支持jpg,png<br> 
上传一张图片 <input type=“file” name=“pic”> 
<input type=“submit” value=“upload”> 
</form> 
<? 
} 
?>

参考资料:
http://www.xarg.org/2008/07/face-detection-with-php/
http://www.opencv.org.cn/index.php/首页
http://www.cs.iit.edu/~agam/cs512/lect-notes/opencv-intro/index.html

PHP 相关文章推荐
php中的实现trim函数代码
Mar 19 PHP
php preg_match_all结合str_replace替换内容中所有img
Oct 11 PHP
php摘要生成函数(无乱码)
Feb 04 PHP
PHP提示Deprecated: mysql_connect(): The mysql extension is deprecated的解决方法
Aug 28 PHP
浅谈php错误提示及查错方法
Jul 14 PHP
php创建无限级树型菜单
Nov 05 PHP
PHP中key和current,next的联合运用实例分析
Mar 29 PHP
php metaphone()函数及php localeconv() 函数实例解析
May 15 PHP
弹出模态框modal的实现方法及实例
Sep 19 PHP
网站被恶意镜像怎么办 php一段代码轻松搞定(全面版)
Oct 23 PHP
PHP设计模式之单例模式定义与用法分析
Mar 26 PHP
Apache+PHP+MySQL搭建PHP开发环境图文教程
Aug 06 PHP
PHP 身份验证方面的函数
Oct 11 #PHP
使用zend studio for eclipse不能激活代码提示功能的解决办法
Oct 11 #PHP
关于页面优化和伪静态
Oct 11 #PHP
PHP iconv 函数转gb2312的bug解决方法
Oct 11 #PHP
Ha0k 0.3 PHP 网页木马修改版
Oct 11 #PHP
PHP获取163、gmail、126等邮箱联系人地址【已测试2009.10.10】
Oct 11 #PHP
PHP 日期时间函数的高级应用技巧
Oct 10 #PHP
You might like
php和editplus正则表达式去除空白行
2015/04/17 PHP
在Mac上编译安装PHP7的开发环境
2015/07/28 PHP
Yii中CGridView实现批量删除的方法
2015/12/28 PHP
php session 写入数据库
2016/02/13 PHP
微信支付的开发流程详解
2016/09/13 PHP
PHP实现QQ快速登录的方法
2016/09/28 PHP
mac pecl 安装php7.1扩展教程
2019/10/17 PHP
一份老外写的XMLHttpRequest代码多浏览器支持兼容性
2007/01/11 Javascript
Javascript面向对象之四 继承
2011/02/08 Javascript
js 使FORM表单的所有元素不可编辑的示例代码
2013/10/17 Javascript
javascript框架设计之浏览器的嗅探和特征侦测
2015/06/23 Javascript
Bootstrap中文本框的宽度变窄并且加入一副验证码图片的实现方法
2016/06/23 Javascript
原生js获取元素样式的简单方法
2016/08/06 Javascript
JS实现页面跳转参数不丢失的方法
2016/11/28 Javascript
Javascript for in的缺陷总结
2017/02/03 Javascript
vue检测对象和数组的变化分析
2018/06/30 Javascript
js数据类型检测总结
2018/08/05 Javascript
nuxt中使用路由守卫的方法步骤
2019/01/27 Javascript
vue实现form表单与table表格的数据关联功能示例
2019/01/29 Javascript
小程序:授权、登录、session_key、unionId的详解
2019/05/15 Javascript
nodejs 递归拷贝、读取目录下所有文件和目录
2019/07/18 NodeJs
[34:10]Secret vs VG 2019国际邀请赛淘汰赛 败者组 BO3 第二场 8.24
2019/09/10 DOTA
Python实现PS滤镜碎片特效功能示例
2018/01/24 Python
在Python中调用Ping命令,批量IP的方法
2019/01/26 Python
Python如何应用cx_Oracle获取oracle中的clob字段问题
2019/08/27 Python
Laravel框架表单验证格式化输出的方法
2019/09/25 Python
Python实现密钥密码(加解密)实例详解
2020/04/26 Python
python numpy矩阵信息说明,shape,size,dtype
2020/05/22 Python
Html5元素及基本语法详解
2016/08/02 HTML / CSS
德国购买门票网站:ADticket.de
2019/10/31 全球购物
煤矿班组长的职责
2013/12/25 职场文书
二年级数学教学反思
2014/01/21 职场文书
2014年教学工作总结
2014/11/13 职场文书
小学班主任工作随笔
2015/08/15 职场文书
Python图片验证码降噪和8邻域降噪
2021/08/30 Python
vue使用watch监听属性变化
2022/04/30 Vue.js