<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>影の域 &#187; C</title>
	<atom:link href="http://www.zfkun.com/blog/index.php/archives/category/code/c/feed" rel="self" type="application/rss+xml" />
	<link>http://www.zfkun.com/blog</link>
	<description>时光真的如水...</description>
	<lastBuildDate>Thu, 29 Apr 2010 06:43:15 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>基于OpenCV的PHP图像人脸识别技术</title>
		<link>http://www.zfkun.com/blog/index.php/archives/39</link>
		<comments>http://www.zfkun.com/blog/index.php/archives/39#comments</comments>
		<pubDate>Sat, 16 Jan 2010 15:22:35 +0000</pubDate>
		<dc:creator>影之迷惑</dc:creator>
				<category><![CDATA[C]]></category>
		<category><![CDATA[facedetect]]></category>
		<category><![CDATA[opencv]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[人脸识别]]></category>
		<category><![CDATA[扩展]]></category>

		<guid isPermaLink="false">http://www.zfkun.com/blog/?p=39</guid>
		<description><![CDATA[写了一个PHP扩展openCV，只封装了两个函数，叫face_detect和face_count。openCV是一个开源的用C/C++开发的计算机图形图像库，非常强大，研究资料很齐全。本文重点是介绍如何使用php来调用其中的局部的功能。人脸侦查技术只是openCV一个应用分支。]]></description>
			<content:encoded><![CDATA[<p>写了一个PHP扩展openCV，只封装了两个函数，叫face_detect和face_count。openCV是一个开源的用C/C++开发的计算机图形图像库，非常强大，研究资料很齐全。本文重点是介绍如何使用php来调用其中的局部的功能。人脸侦查技术只是openCV一个应用分支。</p>
<p>1.安装<br />
从源代码编译成一个动态的so文件。</p>
<p>1.1.安装 OpenCV (OpenCV 1.0.0)<br />
下载地址:http://sourceforge.net/project/showfiles.php?group_id=22870&#038;package_id=16948</p>
<pre name="code" class="c">
#tar xvzf OpenCV-1.0.0.tar.gz
#cd opencv-1.0.0
#./configure
#make
#make install
#make check (检查是否安装全部正确)
</pre>
<p>提示： 不要指定安装路径，否则后面编译facedetect会找不到OpenCV的路径。</p>
<p>1.2 安装facedetect<br />
下载地址http://www.xarg.org/download/facedetect-1.0.0.tar.gz</p>
<pre name="code" class="c">
#tar xzvf facedetect-1.0.0.tar.gz
#cd facedetect-1.0.0
#phpize &#038;&#038; ./configure &#038;&#038; make &#038;&#038; make install
</pre>
<p>编译完之后会提示facedetect.so 文件所在的位置。</p>
<p>最后确认在php.ini加入<br />
extension=facedetect.so，重启apache.</p>
<p>2.函数使用<br />
在phpinfo()里检查是否有facedetect这个模块。<br />
从openCV源代码/data/haarcascades/里头取出所有xml文件放在php的执行目录下</p>
<pre name="code" class="php">
//检查有多少个脸型
var_dump(face_count('party.jpeg', haarcascade_frontalface_alt.xml'));
//返回脸型在图片中的位置参数，多个则返回数组
$arr = face_detect('party.jpeg', haarcascade_frontalface_alt2.xml');
print_r($arr);
</pre>
<p>3.应用<br />
结合imagick可以将图片做一下应用。因为 face_detect只返回一个矩形参数，包含x，y坐标和w，h长宽参数。下面是我的一个应用demo</p>
<pre name="code" class="php">
&lt;?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{
?&gt;
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8″ />
<form method="POST" enctype="multipart/form-data">
  人脸识别试验：只支持jpg,png
  上传一张图片
<input type="file" name="pic">
<input type="submit" value="upload">
  </form>

&lt;?
}
?&gt;
</pre>
<p>
参考资料:</p>
<p>http://www.xarg.org/2008/07/face-detection-with-php/</p>
<p>http://www.opencv.org.cn/index.php/首页</p>
<p>http://www.cs.iit.edu/~agam/cs512/lect-notes/opencv-intro/index.html</p>
]]></content:encoded>
			<wfw:commentRss>http://www.zfkun.com/blog/index.php/archives/39/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
