php apm 扩展,php下的 pHash扩展实现

最近应客户要求,需要做一个带有图片识别功能的web应用,OpenCV虽然高大上,用它来解决这个问题就是杀鸡用牛刀了,这个问题和面部识别,车牌识别的原理是不同的,在未知要分析的图片的特征的情况下,无法提取特征,只能采用比较通用的算法,也就是图片相似性比对算法,常见的有pHash和SIFT。windows下面就自己写了个类似的算法,可以凑合着用,为了提高性能,特别是识别精度和速度,就采用了linux下面php加 pHash 扩展来实现,就把自己这次实现过程跟大家分享下,希望以后有需求的朋友,可以节约时间。

运行环境如下  ,硬件,I3处理器2.4G双核,4G内存,软件, win7 ,+vmware worksatation10 ,+ubuntu12.04。    (apache 2.4 ,  php 5.7 )

怎么在虚拟机下安装 ubuntu ,设置让它能上网,安装一些编译程序需要的库, 这部分就忽略了。

php 开发环境搭建, 如果想省事的可以采用lnmp一键安装包,下载地址http://lnmp.org/install.html,

安装的时候 ,可以选择lnmpa ,就连apache也给安装上去了, 安装完毕 ,运行下  lnmp  status , 可以看到 nginx ,myslq , php,apache,都在运行状态了 。

documentRoot :/home/wwwroot/default

浏览器 输入网址  localhost/phpinfo.php ,显示正常,说明安装成功。

下面开始安装pHash扩展 ,,0.9.5版本的安装起来应该省事,只支持图片比较,但我想使用最新版本 pHash-0.9.6,下载地址 http://www.phash.org/download/  ,该网址也列出了 0.9.6版本需要依赖的东西,0.96版本功能是非常强大的,支持文本,图像, 音频,视频的感知近似性计算。 这个FFMPEG特别麻烦,整了老半天,依然不能正确生成ffmpeg的 一系列so文件。  如果你只需要image 识别, 不考虑音视频, 那么可以不用FFMPEG的,那就考虑把对FFMPEG的依赖给去除了,这个需要很大的工作量,修改makefile 等文件, 还要修改 phash的 源文件  , 注意,是在下面列出的步骤5和6中实现的,不是在4中实现。这个过程有点复杂, 但解决思路就是那样的,我也那么干的。至于你在编译安装FFMPEG的时候会不会遇到问题, 这个我也不确定,只能看你的运气了,实在怕麻烦,就去下载.0.95 版的吧。

下面我就贴出我的下载地址,编译安装步骤

1    wget   http://cimg.eu/files/CImg_latest.zip

unzip  CImg_latest.zip

cp CImg-1.7.5/CImg.h /usr/local/include

2  到  http://download.csdn.net/download/angle502/7632179

unzip  libsndfile.zip

cd libsndfile

$ ./autogen.sh

$ ./configure --enable-werror

$ make

$ make check

3  http://download.csdn.net/download/dragon810913/2412579

下载 安装 libsamplerate0.1.7

解压,

进入 目录 libsamplerate

./configure

make

make install

./configure  --enable-gpl  --enable-shared  --enable-swscale  --disable-yasm

make

make  install

顺便说下,我的电脑不知道什么原因,FFMPEG始终无法正常安装,所以,我花费了很大的力气,

在pHash编译的时候,将它彻底屏蔽了 才得以编译出正确的  pHash.so文件 , 我也只能说,祝你好运。

$ cd pHash-0.9.6

$ ./configure --enable-video-hash=no  --enable-audio-hash=no   LIBS="-lpthread"

$ make && make install

6  $ cd   pHash-0.9.6/bindings/php

$ phpize

$ ./configure LIBS="-lpthread"   --with-php-config=/usr/local/php/bin/php-config

$ make

$ make test

$ make install

7  手工编辑 php.ini   ,添加pHash扩展

extension=/usr/local/php/lib/php/extensions/no-debug-non-zts-20131226/pHash.so

# restart apache   ,重启web服务器,,,如果是用lnmp安装包安装的话,可以尝试命令,lnmp  restart

8    ldd  /usr/local/php/lib/php/extensions/no-debug-non-zts-20131226/pHash.so

检查下 动态库依赖 是否完整,

php -m

查看下 php 加载了哪些扩展 , pHash.so有没有扩展成功

9 写个 测试 phash的php文件 , 用到phash的主要代码  ,

$h2=ph_dct_imagehash($ImagePath1);

$h1= h_dct_imagehash($ImagePath2);

$distance =ph_image_dist($h1, $h2);

==========下面的截图就是两张图片的比对结果=======

c9ddc4a9e9f7dc4ce8fdc6498625cc7b.png

======= End====觉得博主辛苦的就去点个赞吧,哈哈=====

如果你上传几张图片,测试结果 ,发现自己的图片,有时间居然比猪还更像猪,那一点都不奇怪, 算法是死的,人是活的,有写时候工具,关键还要看你怎么去应用它。

While u find the Hamming distance between ur profile and a pig's is zero , what i can say maybe is only u r tooo handsome !

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值