基于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 相关文章推荐
通过ODBC连接的SQL SERVER实例
Oct 09 PHP
Snoopy类使用小例子
Apr 15 PHP
php初学者写及时补给skype用户充话费的小程序
Nov 02 PHP
php 静态变量与自定义常量的使用方法
Jan 26 PHP
php页面缓存ob系列函数介绍
Oct 18 PHP
分享下页面关键字抓取www.icbase.com站点代码(带asp.net参数的)
Jan 30 PHP
joomla数据库操作示例代码
Jan 06 PHP
深入理解PHP 数组之count 函数
Jun 13 PHP
PHP防止图片盗用(盗链)的方法小结
Nov 11 PHP
PHP实现的各类hash算法长度及性能测试实例
Aug 27 PHP
php判断文件上传图片格式的实例详解
Sep 30 PHP
PHP基于curl实现模拟微信浏览器打开微信链接的方法示例
Feb 15 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 压缩文件夹的类代码
2009/11/05 PHP
php中使用临时表查询数据的一个例子
2013/02/03 PHP
smarty模板引擎中自定义函数的方法
2015/01/22 PHP
PHPTree――php快速生成无限级分类
2018/03/30 PHP
PHP共享内存使用与信号控制实例分析
2018/05/09 PHP
基于JQuery的简单实现折叠菜单代码
2010/09/15 Javascript
编写可维护面向对象的JavaScript代码[翻译]
2011/02/12 Javascript
JS模拟面向对象全解(一、类型及传递)
2011/07/13 Javascript
详解JavaScript中void语句的使用
2015/06/04 Javascript
JS实现的页面自定义滚动条效果
2015/10/26 Javascript
浅谈JS运算符&amp;&amp;和|| 及其优先级
2016/08/10 Javascript
AngularJS动态菜单操作指令
2017/04/25 Javascript
js实现QQ面板拖拽效果(慕课网DOM事件探秘)(全)
2017/09/19 Javascript
JavaScript fetch接口案例解析
2018/08/30 Javascript
Vue父组件如何获取子组件中的变量
2019/07/24 Javascript
layui实现checkbox的目录树tree的例子
2019/09/12 Javascript
[50:28]2018DOTA2亚洲邀请赛 3.31 小组赛 A组 Newbee vs KG
2018/04/01 DOTA
浅谈MySQL中的触发器
2015/05/05 Python
Python中functools模块的常用函数解析
2016/06/30 Python
python实现随机森林random forest的原理及方法
2017/12/21 Python
python使用folium库绘制地图点击框
2018/09/21 Python
对python周期性定时器的示例详解
2019/02/19 Python
PyQT5 QTableView显示绑定数据的实例详解
2019/06/25 Python
Python中一个for循环循环多个变量的示例
2019/07/16 Python
python中的global关键字的使用方法
2019/08/20 Python
最新2019Pycharm安装教程 亲测
2020/02/28 Python
Django数据模型中on_delete使用详解
2020/11/30 Python
利用CSS3的transition属性实现滑动效果
2015/08/05 HTML / CSS
H&M旗下高端女装品牌:& Other Stories
2018/05/07 全球购物
一家专门经营包包的英国网站:MyBag
2019/09/08 全球购物
护士检查书
2014/01/17 职场文书
工作失误检讨书
2015/01/26 职场文书
办公室主任个人总结
2015/02/28 职场文书
教你怎么用python selenium实现自动化测试
2021/05/27 Python
总结Python使用过程中的bug
2021/06/18 Python
windows server2008 开启端口的实现方法
2022/06/25 Servers