基于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&amp;MYSQL服务器配置说明
Oct 09 PHP
Smarty结合Ajax实现无刷新留言本实例
Jan 02 PHP
Bo-Blog专用的给Windows服务器的IIS Rewrite程序
Aug 26 PHP
PHP批量生成缩略图的代码
Jul 19 PHP
最新的php 文件上传模型,支持多文件上传
Aug 13 PHP
解析php mysql 事务处理回滚操作(附实例)
Aug 05 PHP
PHP操作MySQL事务实例
Nov 05 PHP
php实现singleton()单例模式实例
Nov 06 PHP
thinkphp实现上一篇与下一篇的方法
Dec 08 PHP
php strftime函数获取日期时间(switch用法)
May 16 PHP
PHP时间函数使用详解
Mar 21 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写的serv-u的web申请账号的程序
2006/10/09 PHP
php源码分析之DZX1.5随机数函数random用法
2015/06/17 PHP
php array_keys 返回数组的键名
2016/10/25 PHP
PHP递归实现快速排序的方法示例
2017/12/18 PHP
PHP asXML()函数讲解
2019/02/03 PHP
jquery判断单个复选框是否被选中的代码
2009/09/03 Javascript
Javascript 判断是否存在函数的方法
2013/01/03 Javascript
一个实用的图片切换支持点击切换和自动轮播
2014/09/09 Javascript
浏览器兼容性问题大汇总
2015/12/17 Javascript
jQuery实现的鼠标滑过弹出放大图片特效
2016/01/08 Javascript
jQuery图片轮播插件——前端开发必看
2016/05/31 Javascript
jquery实现图片列表鼠标移入微动
2016/12/01 Javascript
ES6新特性之Object的变化分析
2017/03/31 Javascript
详解vue-cli与webpack结合如何处理静态资源
2017/09/19 Javascript
JavaScript复制内容到剪贴板的两种常用方法
2018/02/27 Javascript
Javascript格式化并高亮xml字符串的方法及注意事项
2018/08/13 Javascript
Angular项目如何升级至Angular6步骤全纪录
2018/09/03 Javascript
微信实现自动跳转到用其他浏览器打开指定APP下载
2019/02/15 Javascript
vue如何搭建多页面多系统应用
2020/06/17 Javascript
React 条件渲染最佳实践小结(7种)
2020/09/27 Javascript
[08:08]DOTA2-DPC中国联赛2月28日Recap集锦
2021/03/11 DOTA
详解pyenv下使用python matplotlib模块的问题解决
2018/11/29 Python
pandas 如何分割字符的实现方法
2019/07/29 Python
详解Python3 pandas.merge用法
2019/09/05 Python
Python json模块与jsonpath模块区别详解
2020/03/05 Python
使用keras和tensorflow保存为可部署的pb格式
2020/05/25 Python
Ray-Ban雷朋瑞典官方网站:全球领先的太阳眼镜品牌
2019/08/22 全球购物
怎样声明接口
2014/09/19 面试题
经贸日语专业个人求职信
2013/12/13 职场文书
《两个铁球同时着地》教学反思
2014/02/13 职场文书
《唯一的听众》教学反思
2014/02/20 职场文书
英文自荐信常用句子
2014/03/26 职场文书
大二学习计划书范文
2014/04/27 职场文书
二年级班级文化建设方案
2014/05/10 职场文书
英文道歉信
2015/01/20 职场文书
python小程序之飘落的银杏
2021/04/17 Python