基于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 相关文章推荐
使用dump函数,给php加断点测试
Jun 25 PHP
php 模拟post_验证页面的返回状态(实例讲解)
Oct 28 PHP
php setcookie函数的参数说明及其用法
Apr 20 PHP
PHP根据传来的16进制颜色代码自动改变背景颜色
Jun 13 PHP
php常用hash加密函数
Nov 22 PHP
php通过strpos查找字符串出现位置的方法
Mar 17 PHP
jQuery+Ajax+PHP“喜欢”评级功能实现代码
Oct 08 PHP
在Mac OS下搭建LNMP开发环境的步骤详解
Mar 10 PHP
微信小程序 消息推送php服务器验证实例详解
Mar 30 PHP
PHP观察者模式示例【Laravel框架中有用到】
Jun 15 PHP
PHP PDOStatement::fetchAll讲解
Jan 31 PHP
php面向对象重点知识分享
Sep 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
phpExcel导出大量数据出现内存溢出错误的解决方法
2013/02/28 PHP
PHP遍历目录并返回统计目录大小
2014/06/09 PHP
PHP读取汉字的点阵数据
2015/06/22 PHP
php类中的$this,static,final,const,self这几个关键字使用方法
2015/12/14 PHP
PHP的mysqli_select_db()函数讲解
2019/01/23 PHP
Yii框架Session与Cookie使用方法示例
2019/10/14 PHP
PHP常量DIRECTORY_SEPARATOR原理及用法解析
2020/11/10 PHP
根据分辨率不同,调用不同的css文件
2006/08/25 Javascript
javascript加号&quot;+&quot;的二义性说明
2013/03/04 Javascript
jQuery控制TR显示隐藏的几种方法
2014/06/18 Javascript
JavaScript事件委托技术实例分析
2015/02/06 Javascript
jQuery 常用代码集锦(必看篇)
2016/05/16 Javascript
微信小程序 教程之事件
2016/10/18 Javascript
输入框点击时边框变色效果的实现方法
2016/12/26 Javascript
浅谈JavaScript异步编程
2017/01/20 Javascript
jQuery事件_动力节点Java学院整理
2017/07/05 jQuery
移动端触摸滑动插件swiper使用方法详解
2017/08/11 Javascript
基于JQuery的Ajax方法使用详解
2017/08/16 jQuery
JS闭包的几种常见形式实例详解
2017/09/16 Javascript
Angular学习笔记之集成三方UI框架、控件的示例
2018/03/23 Javascript
vue实现选项卡及选项卡切换效果
2018/04/24 Javascript
json解析大全 双引号、键值对不在一起的情况
2019/12/06 Javascript
vue实现在线学生录入系统
2020/05/30 Javascript
python list排序的两种方法及实例讲解
2017/03/20 Python
Python3 操作符重载方法示例
2017/11/23 Python
Python字符串内置函数功能与用法总结
2019/04/16 Python
Python 文件数据读写的具体实现
2020/01/24 Python
python两种注释用法的示例
2020/10/09 Python
关于css兼容性问题及一些常见问题汇总
2016/05/03 HTML / CSS
使用CSS3美化HTML表单的技巧演示
2016/05/17 HTML / CSS
马来西亚综合购物网站:Lazada马来西亚
2018/06/05 全球购物
模具设计与制造专业应届生求职信
2013/10/18 职场文书
安全知识竞赛主持词
2015/06/30 职场文书
公司团队口号霸气押韵
2015/12/24 职场文书
合同范本之电脑出租
2019/08/13 职场文书
Pytorch 如何加速Dataloader提升数据读取速度
2021/05/28 Python