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 相关文章推荐
火车头采集器3.0采集图文教程
Mar 17 PHP
php 判断数组是几维数组
Mar 20 PHP
PHP学习笔记(二) 了解PHP的基本语法以及目录结构
Aug 04 PHP
PHP实现抓取Google IP并自动修改hosts文件
Feb 12 PHP
PHP使用in_array函数检查数组中是否存在某个值
Mar 25 PHP
php实现用于计算执行时间的类实例
Apr 18 PHP
php中Snoopy类用法实例
Jun 19 PHP
PHP中常见的缓存技术实例分析
Sep 23 PHP
php实现购物车功能(以大苹果购物网为例)
Mar 09 PHP
php安装扩展mysqli的实现步骤及报错解决办法
Sep 23 PHP
php获取是星期几的的一些常用姿势
Dec 15 PHP
PHP7 list() 函数修改
Mar 09 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
使用gd库实现php服务端图片裁剪和生成缩略图功能分享
2013/12/25 PHP
php集成环境xampp中apache无法启动问题解决方案
2014/11/18 PHP
php+mysql+jquery实现简易的检索自动补全提示功能
2017/04/15 PHP
ThinkPHP框架表单验证操作方法
2017/07/19 PHP
laravel 配置路由 api和web定义的路由的区别详解
2019/09/03 PHP
PHP页面静态化――纯静态与伪静态用法详解
2020/06/05 PHP
js setTimeout 参数传递使用介绍
2013/08/13 Javascript
快速查找数组中的某个元素并返回下标示例
2013/09/03 Javascript
javascript打开word文档的方法
2014/04/16 Javascript
Jquery实现的角色左右选择特效
2014/05/21 Javascript
js实现的简单radio背景颜色选择器代码
2015/08/18 Javascript
深入浅析NodeJs并发异步的回调处理
2015/12/21 NodeJs
在JavaScript中模拟类(class)及类的继承关系
2016/05/20 Javascript
快速掌握jQuery插件WebUploader文件上传
2016/11/07 Javascript
canvas时钟效果
2017/02/16 Javascript
关于axios返回空对象的问题解决
2017/04/04 Javascript
基于jQuery实现的设置文本区域的光标位置
2018/06/15 jQuery
微信小程序常见页面跳转操作简单示例
2019/05/01 Javascript
用Node写一条配置环境的指令
2019/11/14 Javascript
python数组过滤实现方法
2015/07/27 Python
Django 内置权限扩展案例详解
2019/03/04 Python
Python3 全自动更新已安装的模块实现
2020/01/06 Python
Ubuntu20下的Django安装的方法步骤
2021/01/24 Python
虚拟环境及venv和virtualenv的区别说明
2021/02/05 Python
python实现MySQL指定表增量同步数据到clickhouse的脚本
2021/02/26 Python
Html5页面上如何禁止手机虚拟键盘弹出
2020/03/19 HTML / CSS
畜牧兽医本科生个人的自我评价
2013/10/11 职场文书
《问银河》教学反思
2014/02/19 职场文书
道路运输企业安全生产责任书
2014/07/28 职场文书
公司周年庆活动方案
2014/08/25 职场文书
小学生感恩父母演讲稿
2014/08/28 职场文书
2014年九一八事变演讲稿
2014/09/14 职场文书
pygame面向对象的飞行小鸟实现(Flappy bird)
2021/04/01 Python
原生JS中应该禁止出现的写法
2021/05/05 Javascript
Python实现老照片修复之上色小技巧
2021/10/16 Python
Go归并排序算法的实现方法
2022/04/06 Golang