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 相关文章推荐
使用adodb lite解决问题
Dec 31 PHP
用php实现批量查询清除一句话后门的代码
Jan 20 PHP
php disk_free_space 返回目录可用空间
May 10 PHP
PHP将DateTime对象转化为友好时间显示的实现代码
Sep 20 PHP
Destoon模板制作简明教程
Jun 20 PHP
PHP输出九九乘法表代码实例
Mar 27 PHP
基于PHP实现假装商品限时抢购繁忙的效果
Oct 16 PHP
必须收藏的23个php实用代码片段
Feb 02 PHP
php自定义扩展名获取函数示例
Dec 12 PHP
PHP-CGI远程代码执行漏洞分析与防范
May 07 PHP
php如何修改SESSION的生存存储时间的实例代码
Jul 05 PHP
PHP正则判断一个变量是否为正整数的方法
Feb 27 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
phpMyAdmin 链接表的附加功能尚未激活的问题
2010/08/01 PHP
php下通过IP获取地理位置的代码(小偷程序)
2011/06/09 PHP
PHP实现的mysql主从数据库状态检测功能示例
2017/07/20 PHP
商城常用滚动的焦点图效果代码简单实用
2013/03/28 Javascript
在Javascript中 声明时用"var"与不用"var"的区别
2013/04/15 Javascript
Dom 学习总结以及实例的使用介绍
2013/04/24 Javascript
Javascript Web Slider 焦点图示例源码
2013/10/10 Javascript
引入autocomplete组件时JS报未结束字符串常量错误
2014/03/19 Javascript
javascript中的throttle和debounce浅析
2014/06/06 Javascript
javascript瀑布流布局实现方法详解
2016/02/17 Javascript
基于vue打包后字体和图片资源失效问题的解决方法
2018/03/06 Javascript
详解Vue SPA项目优化小记
2018/07/03 Javascript
Vue-cli配置打包文件本地使用的教程图解
2018/08/02 Javascript
webpack优化的深入理解
2018/12/10 Javascript
HTML+JavaScript实现扫雷小游戏
2019/09/30 Javascript
使用JavaScript通过前端发送电子邮件
2020/05/22 Javascript
python关闭windows进程的方法
2015/04/18 Python
python决策树之CART分类回归树详解
2017/12/20 Python
高效使用Python字典的清单
2018/04/04 Python
Python之csv文件从MySQL数据库导入导出的方法
2018/06/21 Python
django框架模板中定义变量(set variable in django template)的方法分析
2019/06/24 Python
阿里云ECS服务器部署django的方法
2019/08/29 Python
python GUI库图形界面开发之PyQt5信号与槽的高级使用技巧装饰器信号与槽详细使用方法与实例
2020/03/06 Python
Lookfantastic希腊官网:英国知名美妆购物网站
2018/09/15 全球购物
北卡罗来纳州豪华家具和家居装饰店:Carolina Rustica
2018/10/30 全球购物
澳大利亚当地社区首选的光学商店:1001 Optical
2019/08/24 全球购物
医院办公室主任职责
2013/12/29 职场文书
运动会广播稿60字
2014/01/15 职场文书
创先争优制度
2014/01/21 职场文书
推荐信格式范文
2014/05/09 职场文书
酒店人事专员岗位职责
2015/04/07 职场文书
黄埔军校观后感
2015/06/10 职场文书
vue 实现上传组件
2021/05/31 Vue.js
Pytorch中的学习率衰减及其用法详解
2021/06/05 Python
Java实现多文件上传功能
2021/06/30 Java/Android
win10搭建配置ftp服务器的方法
2022/08/05 Servers