MacOS 安装 PHP的图片裁剪扩展Tclip


Posted in PHP onMarch 25, 2015

Tclip 用于图片裁剪,有以下特点:

能进行人脸识别。图片中有人脸,将自动视为人脸区域为重要区域,将不会被裁剪掉。
自动识别其它重要区域。如果图片中未识别出人脸,则会根据特征分布计算出重区域。
总而言之,自动识别图片中的重要区域,并且在图片裁剪时保留重要区域。
源码地址:https://github.com/exinnet/tclip

安装opencv

根据github上的说明,在CentOS上安装没有问题,但在我的MacOS上就挂了。

首先遇到的问题就是,opencv安装不过去。还好,上github下载最新的opencv-2.4.11 安装成功。

下载地址:https://github.com/Itseez/opencv/releases

使用当前最新版本 OpenCV 2.4.11

安装依赖

在安装opencv之前,先安装一些依赖包:

brew install gtk+  pkgconfig libpng zlib libjpeg libtiff cmake

提示: brew的安装使用请参考 http://brew.sh/

安装opencv

开始安装 opencv:

tar zxf opencv-2.4.11.tar.gz

cd opencv-2.4.11

cmake CMakeLists.txt 

make && make install

安装php tclip

先下载:https://github.com/exinnet/tclip/archive/master.zip

然后继续:

unzip tclip-master.zip 

cd tclip-master/php_ext

phpize

./configure

如果不出意外,到这一步,应该就挂掉了,提示:

checking for opencv.pc file in default path... found in /usr/lib/pkgconfig

found in /usr/local/lib/pkgconfig

configure: error: no result from pkg-config opencv --libs --cflags opencv

在 Tclip 作者的页面上 http://www.bo56.com/tclip%E4%BA%BA%E8%84%B8%E8%AF%86%E5%88%AB%E5%9B%BE%E7%89%87%E8%A3%81%E5%89%AA/#download

评论中,也有网友遇到了类似的问题,提出修改办法为:

将 config.m4 中的 判断语句test ${i:${#i}-3} = “.so”,改为 test ${i:${#i}-6} = ".dylib”,并尝试将46行的.so 也改称 .dylib
依然提示no result的错误~

再翻翻config.m4的代码和执行 pkg-config opencv --libs --cflags opencv的输出结果:

-I/usr/local/include/opencv -I/usr/local/include -L/usr/local/lib -lopencv_calib3d -lopencv_contrib -lopencv_core -lopencv_features2d -lopencv_flann -lopencv_gpu -lopencv_highgui -lopencv_imgproc -lopencv_legacy -lopencv_ml -lopencv_nonfree -lopencv_objdetect -lopencv_ocl -lopencv_photo -lopencv_stitching -lopencv_superres -lopencv_ts -lopencv_video -lopencv_videostab

感觉怎么对不上,于是跑到Linux安装成功的服务器执行了一下,输出结果如下:

-I/usr/local/include/opencv -I/usr/local/include /usr/local/lib/libopencv_calib3d.so /usr/local/lib/libopencv_contrib.so /usr/local/lib/libopencv_core.so /usr/local/lib/libopencv_features2d.so /usr/local/lib/libopencv_flann.so /usr/local/lib/libopencv_gpu.so /usr/local/lib/libopencv_highgui.so /usr/local/lib/libopencv_imgproc.so /usr/local/lib/libopencv_legacy.so /usr/local/lib/libopencv_ml.so /usr/local/lib/libopencv_nonfree.so /usr/local/lib/libopencv_objdetect.so /usr/local/lib/libopencv_photo.so /usr/local/lib/libopencv_stitching.so /usr/local/lib/libopencv_ts.so /usr/local/lib/libopencv_video.so /usr/local/lib/libopencv_videostab.so

再看他的判断代码:

OPENCV_FLAGS="`pkg-config opencv --libs --cflags opencv`"

for i in $OPENCV_FLAGS;do

if test ${i:0:2} = "-I" ;then

PHP_ADD_INCLUDE(${i:2})

elif test ${i:${#i}-3} = ".so" ;then

dir_name=`dirname $i`

file_name=${i/$dir_name/}

file_name=${file_name/\/lib/}

file_name=${file_name/.so/}

PHP_ADD_LIBRARY_WITH_PATH($file_name,$dir_name,TCLIP_SHARED_LIBADD)

else

AC_MSG_ERROR([no result from pkg-config opencv --libs --cflags opencv])

fi

done

我立刻就明白了,Linux上输出的都是具体的.so路径,MacOS上都是相对的路径,而config.m4中是根据具体路径和扩展名判断的,明白了问题,解决就简单了。

将 pkg-config opencv --libs --cflags opencv 的执行结果修改为具体的路径,并替换到config.m4中:

OPENCV_FLAGS="-I/usr/local/include/opencv -I/usr/local/include /usr/local/lib/libopencv_calib3d.dylib /usr/local/lib/libopencv_contrib.dylib /usr/local/lib/libopencv_core.dylib /usr/local/lib/libopencv_features2d.dylib /usr/local/lib/libopencv_flann.dylib /usr/local/lib/libopencv_gpu.dylib /usr/local/lib/libopencv_highgui.dylib /usr/local/lib/libopencv_imgproc.dylib /usr/local/lib/libopencv_legacy.dylib /usr/local/lib/libopencv_ml.dylib /usr/local/lib/libopencv_nonfree.dylib /usr/local/lib/libopencv_objdetect.dylib /usr/local/lib/libopencv_photo.dylib /usr/local/lib/libopencv_stitching.dylib /usr/local/lib/libopencv_ts.dylib /usr/local/lib/libopencv_video.dylib /usr/local/lib/libopencv_videostab.dylib"

再继续执行:

phpize

./configure

make

make install

顺利安装完成。

以上所述就是本文的全部内容了,希望大家能够喜欢。

请您花一点时间将文章分享给您的朋友或者留下评论。我们将会由衷感谢您的支持!

PHP 相关文章推荐
第五节 克隆 [5]
Oct 09 PHP
PHP目录函数实现创建、读取目录教程实例
Jan 13 PHP
php 代码优化之经典示例
Mar 24 PHP
Zend Framework 2.0事件管理器(The EventManager)入门教程
Aug 11 PHP
ThinkPHP自动完成中使用函数与回调方法实例
Nov 29 PHP
PHP callback函数使用方法和注意事项
Jan 23 PHP
PHP二维数组排序简单实现方法
Feb 14 PHP
PHP实现简易blog的制作
Oct 24 PHP
Laravel框架使用monolog_mysql实现将系统日志信息保存到mysql数据库的方法
Aug 16 PHP
PHP设计模式之模板模式定义与用法详解
Dec 20 PHP
PHP htmlentities()函数用法讲解
Feb 25 PHP
PHP开发实现快递查询功能详解
Apr 08 PHP
php编写的一个E-mail验证类
Mar 25 #PHP
php取得字符串首字母的方法
Mar 25 #PHP
PHP判断IP并转跳到相应城市分站的方法
Mar 25 #PHP
PHP使用in_array函数检查数组中是否存在某个值
Mar 25 #PHP
PHP+MYSQL实现用户的增删改查
Mar 24 #PHP
php创建多级目录的方法
Mar 24 #PHP
php简单获取目录列表的方法
Mar 24 #PHP
You might like
PHP中文分词的简单实现代码分享
2011/07/17 PHP
PHPMailer使用教程(PHPMailer发送邮件实例分析)
2012/12/06 PHP
使用php判断浏览器的类型和语言的函数代码
2013/02/28 PHP
PHP简单获取视频预览图的方法
2015/03/12 PHP
yii,CI,yaf框架+smarty模板使用方法
2015/12/29 PHP
详谈PHP中public,private,protected,abstract等关键字的用法
2017/12/31 PHP
php源码的使用方法讲解
2019/09/26 PHP
对象的类型:本地对象(1)
2006/12/29 Javascript
脚本之家贴图转换+转贴工具用到的js代码超级推荐
2007/04/05 Javascript
javascript 常用关键字列表集合
2007/12/04 Javascript
js获取提交的字符串的字节数
2009/02/09 Javascript
html5的自定义data-*属性和jquery的data()方法的使用示例
2013/08/21 Javascript
在js文件中写el表达式取不到值的原因及解决方法
2013/12/23 Javascript
js实现异步循环实现代码
2016/02/16 Javascript
NodeJS创建基础应用并应用模板引擎
2016/04/12 NodeJs
详解Angular的8个主要构造块
2017/06/20 Javascript
JSONP原理及应用实例详解
2018/09/13 Javascript
对VUE中的对象添加属性
2018/09/18 Javascript
微信小程序 WXML节点信息查询详解
2019/07/29 Javascript
vue-cli基础配置及webpack配置修改的完整步骤
2019/10/20 Javascript
微信h5静默和非静默授权获取用户openId的方法和步骤
2020/06/08 Javascript
Vue中用JSON实现刷新界面不影响倒计时
2020/10/26 Javascript
Python实现把utf-8格式的文件转换成gbk格式的文件
2015/01/22 Python
Python编程中的异常处理教程
2015/08/21 Python
python实现画圆功能
2018/01/25 Python
Python生成器generator用法示例
2018/08/10 Python
详解Numpy数组转置的三种方法T、transpose、swapaxes
2019/05/27 Python
部署Django到阿里云服务器教程示例
2020/06/03 Python
Ootori在线按摩椅店:一家专业的按摩椅制造商
2019/04/10 全球购物
药品业务员岗位职责
2014/04/17 职场文书
大学班级学风建设方案
2014/05/01 职场文书
机关作风整顿个人剖析材料
2014/10/06 职场文书
临时工聘用合同协议书
2014/10/29 职场文书
实习计划书范文
2015/01/16 职场文书
胡雪岩故居导游词
2015/02/06 职场文书
2015年全国科普日活动总结
2015/03/23 职场文书