基于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中一个控制字符串输出的函数
Oct 09 PHP
一键删除顽固的空文件夹 软件下载
Jan 26 PHP
php 魔术函数使用说明
Feb 21 PHP
php获取网卡的MAC地址支持WIN/LINUX系统
Apr 30 PHP
PHP图片处理之使用imagecopy函数添加图片水印实例
Nov 19 PHP
ThinkPHP入口文件设置及相关注意事项分析
Dec 05 PHP
round robin权重轮循算法php实现代码
May 28 PHP
手把手编写PHP框架 深入了解MVC运行流程
Sep 19 PHP
php获取excel文件数据
Apr 21 PHP
在PHP 7下安装Swoole与Yar,Yaf的方法教程
Jun 02 PHP
PHP使用PHPExcel实现批量上传到数据库的方法
Jun 08 PHP
PHP使用openssl扩展实现加解密方法示例
Feb 20 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
destoon安全设置中需要设置可写权限的目录及文件
2014/06/21 PHP
深入分析PHP引用(&amp;)
2014/09/04 PHP
PHP提取字符串中的手机号正则表达式怎么写
2017/07/17 PHP
PHP实现的链式队列结构示例
2017/09/15 PHP
php识别翻转iphone拍摄的颠倒图片
2018/05/17 PHP
IE与firefox之jquery用法区别
2008/10/03 Javascript
js计算页面刷新的次数
2009/07/20 Javascript
javascript用函数实现对象的方法
2015/05/14 Javascript
jQuery原型属性和原型方法详解
2015/07/07 Javascript
原生js制作日历控件实例分享
2016/04/06 Javascript
详解JavaScript异步编程中jQuery的promise对象的作用
2016/05/03 Javascript
全面理解JavaScript中的继承(必看)
2016/06/16 Javascript
NodeJS与HTML5相结合实现拖拽多个文件上传到服务器的实现方法
2016/07/26 NodeJs
基于jquery实现弹幕效果
2016/09/29 Javascript
javascript入门之string对象【新手必看】
2016/11/22 Javascript
Javascript实现倒计时(防页面刷新)实例
2016/12/13 Javascript
Bootstrap CSS组件之导航条(navbar)
2016/12/17 Javascript
Vue.2.0.5实现Class 与 Style 绑定的实例
2017/06/20 Javascript
JavaScript实现的搜索及高亮显示功能示例
2017/08/14 Javascript
Vue官方推荐AJAX组件axios.js使用方法详解与API
2018/10/09 Javascript
微信小程序实现弹出层效果
2020/05/26 Javascript
javascript History对象原理解析
2020/02/17 Javascript
es6函数name属性功能与用法实例分析
2020/04/18 Javascript
Python面向对象原理与基础语法详解
2020/01/02 Python
一款基于css3的动画按钮代码教程
2014/11/23 HTML / CSS
HTML5 Canvas的事件处理介绍
2015/04/24 HTML / CSS
Vans英国官方网站:美国南加州的原创极限运动潮牌
2017/01/20 全球购物
Python的两道面试题
2013/06/29 面试题
高等教育学自荐书范文
2014/02/10 职场文书
八年级语文教学反思
2014/02/11 职场文书
幼儿园保育员责任书
2014/07/22 职场文书
毕业设计论文评语
2014/12/31 职场文书
2016党员党章学习心得体会
2016/01/14 职场文书
浅谈自定义校验注解ConstraintValidator
2021/06/30 Java/Android
基于Go语言构建RESTful API服务
2021/07/25 Golang
python​格式化字符串
2022/04/20 Python