基于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实现的随机广告显示代码
Jun 14 PHP
用mysql内存表来代替php session的类
Feb 01 PHP
PHP的foreach中使用引用时需要注意的一个问题和解决方法
May 29 PHP
php下pdo的mysql事务处理用法实例
Dec 27 PHP
PHP使用mysqldump命令导出数据库
Apr 14 PHP
Zend Framework教程之Zend_Registry对象用法分析
Mar 22 PHP
thinkphp框架下404页面设置 仅三步
May 14 PHP
PHP屏蔽关键字实现方法
Nov 17 PHP
TP3.2批量上传文件或图片 同名冲突问题的解决方法
Aug 01 PHP
Laravel 5.5 的自定义验证对象/类示例代码详解
Aug 29 PHP
PHP回调函数概念与用法实例分析
Nov 03 PHP
PHP的new static和new self的区别与使用
Nov 27 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初学者最感迷茫的问题小结
2010/03/27 PHP
php skymvc 一款轻量、简单的php
2011/06/28 PHP
CodeIgniter错误mysql_connect(): No such file or directory解决方法
2014/09/06 PHP
PHP中常用的字符串格式化函数总结
2014/11/19 PHP
php邮箱地址正则表达式验证
2015/11/13 PHP
php5.2的curl-bug 服务器被php进程卡死问题排查
2016/09/19 PHP
PHP常用操作类之通信数据封装类的实现
2017/07/16 PHP
php+ajax实现无刷新文件上传功能(ajaxuploadfile)
2018/02/11 PHP
PHP支付宝当面付2.0代码
2018/12/21 PHP
HTML中事件触发列表与解说
2007/07/09 Javascript
jQuery插件StickUp实现网页导航置顶
2015/04/12 Javascript
关于javascript中dataset的问题小结
2015/11/16 Javascript
bootstrap中使用google prettify让代码高亮的方法
2016/10/21 Javascript
微信小程序 Tab页切换更新数据
2017/01/05 Javascript
JS使用setInterval实现的简单计时器功能示例
2018/04/19 Javascript
微信小程序左右滚动公告栏效果代码实例
2019/09/16 Javascript
[51:14]LGD vs VP 2018国际邀请赛淘汰赛BO3 第一场 8.21
2018/08/22 DOTA
python有证书的加密解密实现方法
2014/11/19 Python
简单实现python爬虫功能
2015/12/31 Python
定制FileField中的上传文件名称实例
2017/08/23 Python
python 实现判断ip连通性的方法总结
2018/04/22 Python
详谈Python3 操作系统与路径 模块(os / os.path / pathlib)
2018/04/26 Python
Django实现全文检索的方法(支持中文)
2018/05/14 Python
django框架模板语言使用方法详解
2019/07/18 Python
Python 调用 Outlook 发送邮件过程解析
2019/08/08 Python
python 实现快速生成连续、随机字母列表
2019/11/28 Python
HTML5实现获取地理位置信息并定位功能
2015/04/25 HTML / CSS
美国开幕式潮店:Opening Ceremony
2018/02/10 全球购物
波兰多品牌运动商店:StreetStyle24.pl
2020/09/22 全球购物
社区戒毒工作方案
2014/06/04 职场文书
班风口号
2014/06/18 职场文书
计算机应用应届生求职信
2014/07/12 职场文书
三严三实对照检查材料思想汇报
2014/09/28 职场文书
医学生自荐信范文
2015/03/05 职场文书
贫民窟的百万富翁观后感
2015/06/09 职场文书
中学语文教学反思
2016/02/16 职场文书