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中文分词的简单实现代码分享
Jul 17 PHP
PHP版国家代码、缩写查询函数代码
Aug 14 PHP
PHP文件注释标记及规范小结
Apr 01 PHP
PHP通过内置函数memory_get_usage()获取内存使用情况
Nov 20 PHP
学习php设计模式 php实现原型模式(prototype)
Dec 07 PHP
PHP正则表达式入门教程(推荐)
May 18 PHP
完美解决Thinkphp3.2中插入相同数据的问题
Aug 01 PHP
PHP延迟静态绑定的深入讲解
Apr 02 PHP
php实现微信支付之现金红包
May 30 PHP
php微信开发之关键词回复功能
Jun 13 PHP
Yii2框架配置文件(Application属性)与调试技巧实例分析
May 27 PHP
PHP defined()函数的使用图文详解
Jul 20 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
一个查看session内容的函数
2006/10/09 PHP
php is_file 判断给定文件名是否为一个正常的文件
2010/05/10 PHP
php检测网页是否被百度收录的函数代码
2013/10/09 PHP
jquery+php+ajax显示上传进度的多图片上传并生成缩略图代码
2014/10/15 PHP
php连接odbc数据源并保存与查询数据的方法
2014/12/24 PHP
PHP实现自动对图片进行滚动显示的方法
2015/03/12 PHP
PHP基础之输出缓冲区基本概念、原理分析
2019/06/19 PHP
通过代码实例解析PHP session工作原理
2020/12/11 PHP
如何用js控制css中的float的代码
2007/08/16 Javascript
js和jquery中循环的退出和继续下一个循环
2014/09/03 Javascript
js实现图片漂浮效果的方法
2015/03/02 Javascript
setTimeout内不支持jquery的选择器的解决方案
2015/04/28 Javascript
jQuery实现鼠标悬停3d菜单展开动画效果
2017/01/19 Javascript
JavaScript中正则表达式使数字、中文或指定字符高亮显示
2017/10/31 Javascript
玩转vue的slot内容分发
2018/09/22 Javascript
JS/HTML5游戏常用算法之碰撞检测 包围盒检测算法详解【矩形情况】
2018/12/13 Javascript
JS面向对象之多选框实现
2020/01/17 Javascript
js HTML DOM EventListener功能与用法实例分析
2020/04/27 Javascript
Python实现国外赌场热门游戏Craps(双骰子)
2015/03/31 Python
Python实现提取谷歌音乐搜索结果的方法
2015/07/10 Python
python自动发邮件库yagmail的示例代码
2018/02/23 Python
对pandas中Series的map函数详解
2018/07/25 Python
Python线程指南分享
2019/11/19 Python
pyinstaller还原python代码过程图解
2020/01/08 Python
python中rb含义理解
2020/06/18 Python
pandas使用函数批量处理数据(map、apply、applymap)
2020/11/27 Python
《蓝色的树叶》教学反思
2014/02/24 职场文书
中国梦演讲稿范文
2014/08/28 职场文书
小学一年级数学教学计划
2015/01/20 职场文书
邀请函的格式
2015/01/30 职场文书
2015年共青团工作总结
2015/05/15 职场文书
2015年防汛工作总结
2015/05/15 职场文书
2015年仓库管理工作总结
2015/05/25 职场文书
搞笑婚礼主持词开场白
2015/11/24 职场文书
秀!学妹看见都惊呆的Python小招数!【详细语言特性使用技巧】
2021/04/27 Python
MySQL的表级锁,行级锁,排它锁和共享锁
2022/07/15 MySQL