本文所介绍的技术不是原创,而是从一个叫Robert Eisele的德国人那里学习来的。他写了一个PHP扩展openCV,只封装了两个函数,叫face_detect和face_count。 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>
   <?
}
?>

有兴趣的朋友可以试试,像www.conew.com等类似网站应该都使用该技术。

参考资料:
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

体验新版博客

基于OpenCV的PHP图像人脸检测识别…相关推荐

  1. 基于OpenCV的视频处理 - 人脸检测

    一个不知名大学生,江湖人称菜狗 original author: jacky Li Email : 3435673055@qq.com  Time of completion:2023.2.7 Las ...

  2. php配置辨别图片形式,基于OpenCV的PHP图像人脸辨别技术(转载)

    当前位置:我的异常网» 图形/图像 » 基于OpenCV的PHP图像人脸辨别技术(转载) 基于OpenCV的PHP图像人脸辨别技术(转载) www.myexceptions.net  网友分享于:20 ...

  3. python 视频人脸替换_Python基于OpenCV实现视频的人脸检测

    本文实例为大家分享了基于OpenCV实现视频的人脸检测具体代码,供大家参考,具体内容如下 前提条件 1.摄像头 2.已安装Python和OpenCV3 代码 import cv2 import sys ...

  4. python视频人脸检测_Python基于OpenCV实现视频的人脸检测

    本文实例为大家分享了基于OpenCV实现视频的人脸检测具体代码,供大家参考,具体内容如下 前提条件 1.摄像头 2.已安装Python和OpenCV3 代码 import cv2 import sys ...

  5. 基于OpenCV读取摄像头进行人脸检测和人脸识别

    前段时间使用OpenCV的库函数实现了人脸检测和人脸识别,笔者的实验环境为VS2010+OpenCV2.4.4,OpenCV的环境配置网上有很多,不再赘述.检测的代码网上很多,记不清楚从哪儿copy的 ...

  6. php 人像识别,基于OpenCV的PHP图像人脸识别技术

    本文所介绍的技术不是原创,而是从一个叫Robert Eisele的德国人那里学习来的.他写了一个PHP扩展openCV,只封装了两个函数,叫face_detect和face_count. openCV ...

  7. Python基于OpenCV实现视频的人脸检测

    前提条件 1.摄像头 2.已安装Python和OpenCV3 代码 import cv2 import sys import logging as log import datetime as dt ...

  8. JavaCV进阶opencv图像检测识别:摄像头图像人脸检测

    JavaCV免费教程目录: JavaCV入门教程(免费JavaCV教程) javacv实战专栏目录(2016年更新至今): JavaCV实战专栏文章目录(2016年更新至今) 2022年最新JavaC ...

  9. python读取视频流做人脸识别_基于OpenCV和Keras实现人脸识别系列——二、使用OpenCV通过摄像头捕获实时视频并探测人脸、准备人脸数据...

    基于OpenCV和Keras实现人脸识别系列手记: 项目完整代码参见Github仓库. 本篇是上面这一系列手记的第二篇. 在Opencv初接触,图片的基本操作这篇手记中,我介绍了一些图片的基本操作,而 ...

  10. 基于opencv和pillow实现人脸识别系统(附demo)

    更多python教程请到友情连接: 菜鸟教程https://www.piaodoo.com 初中毕业读什么技校 http://cntkd.net 茂名一技http://www.enechn.com p ...

最新文章

  1. java递归url目录_Java递归实现某个目录下所有文件和目录
  2. iphone分辨率_目前最值得入手的三款安卓机!流畅度堪比iPhone,用三五年不过时...
  3. 大话设计模式(四 业务的封装)
  4. html动态散花代码,IOS实现签到特效(散花效果)的实例代码
  5. docker二进制安装mysql_Docker搭建MySQL读写分离主从模式 分布式数据库中间件Mycat分库分表应用...
  6. 利用IDEA创建hadoop文件
  7. Skywalking-13:Skywalking模块加载机制
  8. java shark_JAVA项目开发笔记(3)Shark部分: Shark API | 学步园
  9. 助力高校数字化建设,QQ小程序开发大赛正式启动
  10. 用终端访问路由器设置端口开发_网络故障排查最全总结!ONU、机顶盒、路由器常见网络问题及处理方法...
  11. android制作下拉选择_Excel制作一、二、三级下拉菜单技巧,你一定不能错过
  12. keytool 错误 java.io.IOException: incorrect AVA format
  13. swig c java gemt,SWIG C函数指针和JAVA
  14. 14.TCP/IP 详解卷1 --- DNS:域名系统
  15. ImageLoader简单分析(三)
  16. Paxos算法在大型系统中常见的应用场景
  17. vfp保存为html,vfp向HTTP发送文件
  18. NLP基础--single-pass 聚类算法
  19. 什么农村大学生大多混得比较差-第一性原理分析
  20. 数学建模(4):动态规划

热门文章

  1. matlab之在坐标区上添加图例函数legend
  2. Java项目源码下载SSM网上水果生鲜超市商城|电商购物系统
  3. IGBT功率半导体器件
  4. 2021父亲节祝福话语、海报素材大全
  5. Hello Ragel -- 生成状态机的神器
  6. C语言与三菱plc通讯案例,三菱PLC的通讯与编程案例
  7. mysql实验体会怎么写_数据库实验心得
  8. js 实现图片上传
  9. 安装Image J 插件
  10. 摄动法求解动力学响应