基于OpenCV的PHP图像人脸识别技术
2009-04-29 16:29
1091 查看
安装测试了一下,如果越是高清的大图,效果越明显,感觉不错
一 安装
1 安装opencv http://sourceforge.net/project/showfiles.php?group_id=22870&package_id=16948 下载opencv-1.1pre1.tar.gz(1.0版本没有安装成功)
#tar zxvf opencv-1.1pre1.tar.gz
# cd opencv-1.1.0/
# /.configure
#make
#make install
2 安装facedetect
#wget 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 install
#vi /usr/local/php/etc/php.ini
// 增加extension=facedetect.so
3 重启web服务器,在phpinfo()里查看是否有facedetect这个模块
二 简单测试
从openCV源代码/data/haarcascades/里头取出所有xml文件放在php的执行目录下
//检查有多少个脸型
var_dump(face_count(’test.jpg’, ‘haarcascade_frontalface_alt.xml’));
//返回脸型在图片中的位置参数,多个则返回数组
$arr = face_detect(’test.jpg’, ‘haarcascade_frontalface_alt2.xml’);
print_r($arr);
三 测试代码
<?
if(empty($_POST)) {
?>
<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>
<?
} 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 = “/usr/website/nginx/face/haarcascades/upload/”.$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 = “/usr/website/nginx/face/haarcascades/upload/”.$tmp_name_new.$fix_pic;
// echo $src_pic.”<br>”;
// echo $dst_pic.”<br>”;
$cmd = “/usr/bin/convert -crop “.$w.”x”.$h.”+”.$x.”+”.$y.” “.$src_pic.” “.$dst_pic;
// echo $cmd.”<br>”;
echo `$cmd`;
$pic_src[] = “upload/”.$tmp_name.$fix_pic;
$pic_dst[] = “upload/”.$tmp_name_new.$fix_pic;
}
}
foreach($pic_src as $key => $value) {
echo “<img src=’”.$value.”‘> => <img src=’”.$pic_dst[$key].”‘><br>”;
}
}
?>
一 安装
1 安装opencv http://sourceforge.net/project/showfiles.php?group_id=22870&package_id=16948 下载opencv-1.1pre1.tar.gz(1.0版本没有安装成功)
#tar zxvf opencv-1.1pre1.tar.gz
# cd opencv-1.1.0/
# /.configure
#make
#make install
2 安装facedetect
#wget 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 install
#vi /usr/local/php/etc/php.ini
// 增加extension=facedetect.so
3 重启web服务器,在phpinfo()里查看是否有facedetect这个模块
二 简单测试
从openCV源代码/data/haarcascades/里头取出所有xml文件放在php的执行目录下
//检查有多少个脸型
var_dump(face_count(’test.jpg’, ‘haarcascade_frontalface_alt.xml’));
//返回脸型在图片中的位置参数,多个则返回数组
$arr = face_detect(’test.jpg’, ‘haarcascade_frontalface_alt2.xml’);
print_r($arr);
三 测试代码
<?
if(empty($_POST)) {
?>
<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>
<?
} 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 = “/usr/website/nginx/face/haarcascades/upload/”.$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 = “/usr/website/nginx/face/haarcascades/upload/”.$tmp_name_new.$fix_pic;
// echo $src_pic.”<br>”;
// echo $dst_pic.”<br>”;
$cmd = “/usr/bin/convert -crop “.$w.”x”.$h.”+”.$x.”+”.$y.” “.$src_pic.” “.$dst_pic;
// echo $cmd.”<br>”;
echo `$cmd`;
$pic_src[] = “upload/”.$tmp_name.$fix_pic;
$pic_dst[] = “upload/”.$tmp_name_new.$fix_pic;
}
}
foreach($pic_src as $key => $value) {
echo “<img src=’”.$value.”‘> => <img src=’”.$pic_dst[$key].”‘><br>”;
}
}
?>
相关文章推荐
- 基于OpenCV的PHP图像人脸识别技术
- 基于OpenCV的PHP图像人脸识别技术
- 基于OpenCV的PHP图像人脸识别技术
- [转]基于OpenCV的PHP图像人脸识别技术
- [转]基于OpenCV的PHP图像人脸识别技术
- 基于OpenCV的PHP图像人脸识别技术
- 基于OpenCV的PHP图像人脸侦查技术 zz
- OpenCV和PHP的人脸识别技术
- AR技术之--基于opencv的人脸识别(三)
- OpenCV和PHP的人脸识别技术
- 基于OpenCV的静态图像人脸识别
- 图像项目-基于opencv的人脸识别
- PHP调用百度AI接口人脸识别-语音技术-文本识别-图像识别
- PHP实现人脸识别技术
- 基于LBP的人脸识别技术
- 基于 OpenCV 的 LBP + SVM 人脸识别
- 基于QT和OpenCV的人脸检测识别系统(2)
- Qt+Caffe+OpenCV——【一个基于VGG网络的人脸识别考勤系统】(一)人脸检测与识别模块
- 图像处理--linux opencv2多线程人脸识别