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概述.
Oct 09 PHP
一个用mysql_odbc和php写的serach数据库程序
Oct 09 PHP
php二维数组用键名分组相加实例函数
Nov 06 PHP
php用正则表达式匹配URL的简单方法
Nov 12 PHP
discuz免激活同步登入代码修改方法(discuz同步登录)
Dec 24 PHP
destoon实现调用当前栏目分类及子分类和三级分类的方法
Aug 21 PHP
PHP异常处理Exception类
Dec 11 PHP
Zend Framework入门之环境配置及第一个Hello World示例(附demo源码下载)
Mar 21 PHP
Zend Framework教程之Zend_Config_Ini用法分析
Mar 23 PHP
PHP全局变量与超级全局变量区别分析
Apr 01 PHP
php生成mysql的数据字典
Jul 07 PHP
PHP实现将多个文件压缩成zip格式并下载到本地的方法示例
May 23 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多线程抓取网页实现代码
2010/07/22 PHP
CI框架简单邮件发送类实例
2016/05/18 PHP
图文详解PHP环境搭建教程
2016/07/16 PHP
thinkPHP5 ACL用户权限模块用法详解
2017/05/10 PHP
PHP框架Laravel中实现supervisor执行异步进程的方法
2017/06/07 PHP
再谈javascript原型继承
2014/11/10 Javascript
js鼠标滑过图片震动特效的方法
2015/02/17 Javascript
js验证上传图片的方法
2015/05/12 Javascript
jquery实现的回旋滚动效果完整实例【附demo源码下载】
2016/09/20 Javascript
NodeJS和BootStrap分页效果的实现代码
2016/11/07 NodeJs
实例分析nodejs模块xml2js解析xml过程中遇到的坑
2017/03/18 NodeJs
bootstrap table表格使用方法详解
2017/04/26 Javascript
解决vue2中使用axios http请求出现的问题
2018/03/05 Javascript
vuex2中使用mapGetters/mapActions报错的解决方法
2018/10/20 Javascript
vue+Element中table表格实现可编辑(select下拉框)
2020/05/21 Javascript
[01:11]回顾历届DOTA2国际邀请赛中国区预选赛
2017/06/26 DOTA
Python的多态性实例分析
2015/07/07 Python
Python守护线程用法实例
2017/06/23 Python
pycharm远程调试openstack代码
2017/11/21 Python
Python玩转加密的技巧【推荐】
2019/05/13 Python
python3连接kafka模块pykafka生产者简单封装代码
2019/12/23 Python
详谈tensorflow gfile文件的用法
2020/02/05 Python
Pytorch对Himmelblau函数的优化详解
2020/02/29 Python
Python3.7将普通图片(png)转换为SVG图片格式(网站logo图标)动起来
2020/04/21 Python
新西兰床上用品和家居用品购物网站:Adairs
2018/04/27 全球购物
斐乐美国官方网站:FILA美国
2019/03/01 全球购物
竞聘医务工作人员的自我评价分享
2013/11/04 职场文书
2014学雷锋活动总结
2014/03/09 职场文书
大二学生自我检讨书
2014/10/23 职场文书
违纪开除通知书
2015/04/25 职场文书
2016高校自主招生自荐信范文
2016/01/28 职场文书
员工安全责任协议书
2016/03/22 职场文书
2019最新版试用期劳动合同模板!
2019/07/04 职场文书
导游词之湖北武当山
2019/09/23 职场文书
SQL Server2019数据库之简单子查询的具有方法
2021/04/27 SQL Server
开发者首先否认《遗弃》被取消的传言
2022/04/11 其他游戏