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 相关文章推荐
php加密解密函数authcode的用法详细解析
Oct 28 PHP
Linux下PHP安装mcrypt扩展模块笔记
Sep 10 PHP
微信公众平台实现获取用户OpenID的方法
Apr 15 PHP
简单谈谈php中的unicode和utf8编码
Jun 10 PHP
php实现简易聊天室应用代码
Sep 23 PHP
thinkPHP中钩子的两种配置调用方法详解
Nov 11 PHP
Yii2实现增删改查后留在当前页的方法详解
Jan 13 PHP
php微信公众号开发之答题连闯三关
Oct 20 PHP
php使用curl模拟多线程实现批处理功能示例
Jul 25 PHP
laravel 判断查询数据库返回值的例子
Oct 11 PHP
PDO实现学生管理系统
Mar 21 PHP
一文看懂PHP进程管理器php-fpm
Jun 01 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
星际玩家的三大定律
2020/03/04 星际争霸
PHP伪静态写法附代码
2008/06/20 PHP
PHP中使用imagick实现把PDF转成图片
2015/01/26 PHP
Linux系统下使用XHProf和XHGui分析PHP运行性能
2015/12/08 PHP
腾讯UED 漂亮的提示信息效果代码
2011/09/12 Javascript
javascript为下拉列表动态添加数据项
2014/05/23 Javascript
jquery实现的下拉和收缩效果示例
2014/08/21 Javascript
jQuery中trigger()方法用法实例
2015/01/19 Javascript
js+html5绘制图片到canvas的方法
2015/06/05 Javascript
Jquery简单实现GridView行高亮的方法
2015/06/15 Javascript
JS实现动态生成表格并提交表格数据向后端
2020/11/25 Javascript
手机端点击图片放大特效PhotoSwipe.js插件实现
2016/08/24 Javascript
jQuery如何解决IE输入框不能输入的问题
2016/10/08 Javascript
基于Layer+jQuery的自定义弹框
2020/05/26 Javascript
教大家轻松制作Bootstrap漂亮表格(table)
2016/12/13 Javascript
基于HTML5+JS实现本地图片裁剪并上传功能
2017/03/24 Javascript
js实现简单模态框实例
2018/11/16 Javascript
微信小程序 wepy框架与iview-weapp的用法详解
2019/04/10 Javascript
利用es6 new.target来对模拟抽象类的方法
2019/05/10 Javascript
JavaScript 中判断变量是否为数字的示例代码
2020/10/22 Javascript
深入讲解Python中的迭代器和生成器
2015/10/26 Python
Python使用redis pool的一种单例实现方式
2016/04/16 Python
Python中property函数用法实例分析
2018/06/04 Python
Python实现九宫格式的朋友圈功能内附“马云”朋友圈
2019/05/07 Python
Python数学形态学实例分析
2019/09/06 Python
python 三元运算符使用解析
2019/09/16 Python
python多进程间通信代码实例
2019/09/30 Python
python 矢量数据转栅格数据代码实例
2019/09/30 Python
护理学专业推荐信
2013/12/03 职场文书
大学团支书的自我评价分享
2013/12/14 职场文书
校园活动策划书范文
2014/01/10 职场文书
个人党性剖析材料
2014/02/03 职场文书
企业演讲比赛主持词
2014/03/18 职场文书
基于Redis结合SpringBoot的秒杀案例详解
2021/10/05 Redis
HTTP中的Content-type详解
2022/01/18 HTML / CSS
分享一个vue实现的记事本功能案例
2022/04/11 Vue.js