基于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面向对象全攻略 (一) 面向对象基础知识
Sep 30 PHP
php session_start()关于Cannot send session cache limiter - headers already sent错误解决方法
Nov 27 PHP
利用ThinkPHP内置的ThinkAjax实现异步传输技术的实现方法
Dec 19 PHP
wordpress自定义url参数实现路由功能的代码示例
Nov 28 PHP
php中session退出登陆问题
Feb 27 PHP
php统计时间和内存使用情况示例分享
Mar 13 PHP
php递归法读取目录及文件的方法
Jan 30 PHP
PHP的Socket通信之UDP通信实例
Jul 02 PHP
php等比例缩放图片及剪切图片代码分享
Feb 13 PHP
PHP实现对数组分页处理实例详解
Feb 07 PHP
[原创]php token使用与验证示例【测试可用】
Aug 30 PHP
PHP封装请求类实例分析【基于Yii框架】
Oct 17 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 快速生成 Flash 动画的方法
2007/03/06 PHP
PHP 在线翻译函数代码
2009/05/07 PHP
libmysql.dll与php.ini是否真的要拷贝到c:\windows目录下呢
2010/03/15 PHP
一组PHP加密解密函数分享
2014/06/05 PHP
Laravel访问出错提示:`Warning: require(/vendor/autoload.php): failed to open stream: No such file or di解决方法
2019/04/02 PHP
一个用js实现控制台控件的代码
2007/09/04 Javascript
jQuery autocomplate 自扩展插件、自动完成示例代码
2011/03/28 Javascript
js实现按钮加背景图片常用方法
2014/11/01 Javascript
javascript连续赋值问题
2015/07/08 Javascript
探析浏览器执行JavaScript脚本加载与代码执行顺序
2016/01/12 Javascript
Webpack 实现 AngularJS 的延迟加载
2016/03/02 Javascript
详解AngularJs中$sce与$sceDelegate上下文转义服务
2016/09/21 Javascript
vue router路由嵌套不显示问题的解决方法
2017/06/17 Javascript
JavaScript实现时间表动态效果
2017/07/15 Javascript
Three.js利用顶点绘制立方体的方法详解
2017/09/27 Javascript
vue裁切预览组件功能的实现步骤
2018/05/04 Javascript
JavaScript设计模式之代理模式实例分析
2019/01/16 Javascript
简述Vue中容易被忽视的知识点
2019/12/09 Javascript
vue搜索页开发实例代码详解(热门搜索,历史搜索,淘宝接口演示)
2020/04/11 Javascript
JavaScript 中的执行上下文和执行栈实例讲解
2021/02/25 Javascript
python使用ctypes模块调用windowsapi获取系统版本示例
2014/04/17 Python
在Python的Flask框架下收发电子邮件的教程
2015/04/21 Python
Python多线程threading模块用法实例分析
2019/05/22 Python
python matplotlib饼状图参数及用法解析
2019/11/04 Python
详解python 中in 的 用法
2019/12/12 Python
python匿名函数lambda原理及实例解析
2020/02/07 Python
Python numpy矩阵处理运算工具用法汇总
2020/07/13 Python
canvas学习笔记之绘制简单路径
2019/01/28 HTML / CSS
马来西亚时装购物网站:ZALORA马来西亚
2017/03/14 全球购物
Senreve官网:美国旧金山的奢侈手袋品牌
2019/03/21 全球购物
销售经理工作职责
2014/02/03 职场文书
纪念九一八事变演讲稿:牢记历史,捍卫主权
2014/09/14 职场文书
六一儿童节开幕词
2015/01/29 职场文书
听证通知书
2015/04/24 职场文书
Go语言使用select{}阻塞main函数介绍
2021/04/25 Golang
分享3个非常实用的 Python 模块
2022/03/03 Python