设为首页 收藏本站
查看: 348|回复: 0

[经验分享] OpenCV和PHP的人脸识别技术

[复制链接]

尚未签到

发表于 2017-3-30 08:03:00 | 显示全部楼层 |阅读模式
OpenCV安装之前必须依赖的包:(请先安装好)
pkgconfig
libpng
zlib
libjpeg
libtiff
python
[OpenCV安装] www.opencv.org.
tar xvzf OpenCV-1.0.0.tar.gz
cd opencv-1.0.0
./configure
make
make install
make check (检查是否安装全部正确)
[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
/usr/local/php/bin/phpize
./configure --with-php-config=/usr/local/php/bin/php-config
make
make test
make install
[ImageMagick] http://www.imagemagick.org/
tar jxvf ImageMagick-6.5.0-0.tar.bz2
cd ImageMagick-6.5.0-0
./configure
make
make install
[imagick] http://pecl.php.net/imagick
tar zxvf imagick-2.3.0b1.tgz
imagick-2.3.0b1
/usr/local/php/bin/phpize
./configure --with-php-config=/usr/local/php/bin/php-config
make
make test
make install

[配置]
ll /usr/local/php/lib/php/extensions/no-debug-non-zts-20060613/
看看有没有 facedetect.so 和 imagick.so
vi /usr/local/php/lib/php.ini
在[PHP]模块下增加:
extension = facedetect.so
extension = imagick.so
重启apache

[测试代码]

从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);


//------------------

// 人脸扭曲

//------------------

<?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>

<?

}

?>




//------------------

// 人脸识别

//------------------

<?php

header("Content-Type:text/html; charset:utf-8");

if(empty($_POST)) {

?>

<html>

<head>

<meta HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8">

<title>人脸识别</title>

</head>

<body>

<h2>人脸识别</h2>

PS: 请上传一张带有人脸的图片<br />

<form name="form" id="form" method="POST" enctype="multipart/form-data" action="">

上传图片:<input type="file" name="pic" size="20″">

<input type="submit" name="submit" value="上传">

</form>

</body>

</html>

<?php

} else {

$img = $_FILES['pic']['tmp_name'];


$arr = face_detect($img, 'haarcascade_frontalface_alt2.xml');


if(is_array($arr1)) {

$all = array_merge($arr,$arr1);

} else {

$all = $arr;

}

$allowtype = 1;

switch($_FILES['pic']['type']){

case 'image/pjpeg': $fix_pic.= ".jpg"; break;

case 'image/jpeg': $fix_pic.= ".jpg"; break;

case 'image/x-png': $fix_pic.= ".png"; break;

case 'image/png': $fix_pic.= ".png"; break;

default: $allowtype = 0; break;

}


if($allowtype == 0) {

echo "文件格式错误:只运行jpg或png图片";exit;

}


$tmp_name = time();

$src_pic = "./".$tmp_name.$fix_pic;

move_uploaded_file($_FILES['pic']['tmp_name'], $src_pic);


$pic_src = $pic_dst = array();

if(is_array($all)){

foreach ($all as $k => $v){

$tmp_name_new = $tmp_name."_".$k;

$x = $v['x'];

$y = $v['y'];

$w = $v['w'];

$h = $v['h'];

$dst_pic = "./".$tmp_name_new.$fix_pic;

// echo $src_pic."<br>";

// echo $dst_pic."<br>";

$cmd = "/usr/local/bin/convert -crop ".$w."x".$h."+".$x."+".$y." ".$src_pic." ".$dst_pic;

// echo $cmd."<br>";

echo `$cmd`;

$pic_src[] = "./".$tmp_name.$fix_pic;

$pic_dst[] = "./".$tmp_name_new.$fix_pic;

}

}


foreach($pic_src as $key => $value) {

echo "<img src='".$value."'> => <img src='".$pic_dst[$key]."'><br>";

}

}

?>

  目前,还为测试,等应用后,再公布实验结果~~

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-357326-1-1.html 上篇帖子: 快速建站的php开源程序 下篇帖子: 用 PHP 建立 Excel 檔案 (.xls)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表