基于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系统流量分析的程序
Oct 09 PHP
IStream与TStream之间的相互转换
Aug 01 PHP
PHP中uploaded_files函数使用方法详解
Mar 09 PHP
使用php shell命令合并图片的代码
Jun 23 PHP
php删除文件夹及其文件夹下所有文件的函数代码
Jan 23 PHP
腾讯QQ微博API接口获取微博内容
Oct 30 PHP
PHP把空格、换行符、中文逗号等替换成英文逗号的正则表达式
May 04 PHP
兼容PHP和Java的des加密解密代码分享
Jun 26 PHP
PHP中使用array函数新建一个数组
Nov 19 PHP
实例分析PHP将字符串转换成数字的方法
Jan 27 PHP
laravel实现上传图片的两种方式小结
Oct 12 PHP
Laravel第三方包报class not found的解决方法
Oct 13 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
smarty section简介与用法分析
2008/10/03 PHP
如何使用“PHP” 彩蛋进行敏感信息获取
2013/08/07 PHP
PHP获取php,mysql,apche的版本信息示例代码
2014/01/16 PHP
php实现与erlang的二进制通讯实例解析
2014/07/23 PHP
php实现CSV文件导入和导出
2015/10/24 PHP
php封装的连接Mysql类及用法分析
2015/12/10 PHP
phpmailer绑定邮箱的实现方法
2016/12/01 PHP
Laravel框架搜索分页功能示例
2019/02/01 PHP
PHP自动生成缩略图函数的源码示例
2019/03/18 PHP
mouse_on_title.js
2006/08/25 Javascript
理解Javascript_01_理解内存分配原理分析
2010/10/11 Javascript
js中设置元素class的三种方法小结
2011/08/28 Javascript
浅谈checkbox的一些操作(实战经验)
2013/11/20 Javascript
浅析JQuery UI Dialog的样式设置问题
2013/12/18 Javascript
JavaScript中使用stopPropagation函数停止事件传播例子
2014/08/27 Javascript
js单独获取一个checkbox看其是否被选中
2014/09/22 Javascript
jQuery 选择器详解
2015/01/19 Javascript
IE及IE6浏览器中判断JS文件加载成功失败的方法
2015/02/18 Javascript
jQuery实现移动 和 渐变特效的点击事件
2015/02/26 Javascript
jQuery实现菜单式图片滑动切换
2015/03/14 Javascript
JavaScript中Window对象的属性及事件
2015/12/25 Javascript
javascript中错误使用var造成undefined
2016/03/31 Javascript
浅谈redux以及react-redux简单实现
2018/08/28 Javascript
30分钟用Node.js构建一个API服务器的步骤详解
2019/05/24 Javascript
用jQuery实现抽奖程序
2020/04/12 jQuery
[02:44]重置世界,颠覆未来——DOTA2 7.23版本震撼上线
2019/12/01 DOTA
Python日志器使用方法及原理解析
2020/09/27 Python
python中实现词云图的示例
2020/12/19 Python
荷兰街头时尚之家:Funkie House
2019/03/18 全球购物
工作骂脏话检讨书
2014/10/05 职场文书
大学生党员批评与自我批评范文
2014/10/14 职场文书
机关单位工作失职检讨书
2014/11/20 职场文书
英文感谢信格式
2015/01/21 职场文书
三行辞职书范文
2015/02/26 职场文书
2015年教师国培感言
2015/08/01 职场文书
pytorch 权重weight 与 梯度grad 可视化操作
2021/06/05 Python