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
php批量删除数据
Jan 18 PHP
关于二级目录拖拽排序的实现(源码示例下载)
Apr 26 PHP
解析php二分法查找数组是否包含某一元素
May 23 PHP
关于php程序报date()警告的处理(date_default_timezone_set)
Oct 22 PHP
php通过正则表达式记取数据来读取xml的方法
Mar 09 PHP
PHP实现通过Luhn算法校验信用卡卡号是否有效
Mar 23 PHP
WordPress中转义HTML与过滤链接的相关PHP函数使用解析
Dec 22 PHP
Zend Framework动作助手FlashMessenger用法详解
Mar 05 PHP
PHPUnit测试私有属性和方法功能示例
Jun 12 PHP
php连接mysql之mysql_connect()与mysqli_connect()的区别
Jul 19 PHP
phpStudy vscode 搭建debug调试的教程详解
Jul 28 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实现链结人气统计
2006/10/09 PHP
浅析php工厂模式
2014/11/25 PHP
php使用PDO方法详解
2014/12/27 PHP
使用PHP+MySql实现微信投票功能实例代码
2017/09/29 PHP
网页中的图片的处理方法与代码
2009/11/26 Javascript
使用jquery/js获取iframe父子级、同级获取元素的方法
2016/08/05 Javascript
JS中如何实现Laravel的route函数详解
2017/02/12 Javascript
关于Node.js中Buffer的一些你可能不知道的用法
2017/03/28 Javascript
Node.js折腾记一:读指定文件夹,输出该文件夹的文件树详解
2019/04/20 Javascript
layui prompt 设置允许空白提交的方法
2019/09/24 Javascript
解决layui laydate 时间控件一闪而过的问题
2019/09/28 Javascript
JavaScript实现PC端横向轮播图
2020/02/07 Javascript
微信小程序实现树莓派(raspberry pi)小车控制
2020/02/12 Javascript
NodeJS多种创建WebSocket监听的方式(三种)
2020/06/04 NodeJs
[02:42]2014DOTA2国际邀请赛 三冰专访:我会打到Ti20
2014/07/13 DOTA
Python升级提示Tkinter模块找不到的解决方法
2014/08/22 Python
用Python编写一个国际象棋AI程序
2014/11/28 Python
python实现超简单端口转发的方法
2015/03/13 Python
Python制作爬虫采集小说
2015/10/25 Python
Python中operator模块的操作符使用示例总结
2016/06/28 Python
浅谈Python的list中的选取范围
2018/11/12 Python
python GUI库图形界面开发之PyQt5打印控件QPrinter详细使用方法与实例
2020/02/28 Python
Python处理mysql特殊字符的问题
2020/03/02 Python
Python3 mmap内存映射文件示例解析
2020/03/23 Python
快速创建python 虚拟环境
2020/11/28 Python
美国一家全面的在线零售鞋类公司:SHOEBACCA
2017/01/06 全球购物
请解释接口的显式实现有什么意义
2012/05/26 面试题
创先争优一句话承诺
2014/05/29 职场文书
宿舍标语大全
2014/06/19 职场文书
2014年度安全生产目标管理责任书
2014/07/25 职场文书
党政领导班子群众路线对照检查材料
2014/10/26 职场文书
优秀教师先进材料
2014/12/16 职场文书
单位接收函格式
2015/01/30 职场文书
教师个人师德工作总结2015
2015/05/12 职场文书
幼儿园班级管理心得体会
2016/01/07 职场文书
CSS link与@import的区别和用法解析
2023/05/07 HTML / CSS