PHP的图样裁剪扩充Tclip

作者: 计算机网络  发布:2019-09-26

前两日蛮说有二个PHP扩张,tclip图片裁剪程序。
Tclip致力于人脸识别和图片分明性区域的辨识,它与任何图片裁剪程序最大的分化之处在于,在裁剪后的图片中保留人脸和其余图片显明性区域,可是仍旧图片裁剪。
tclip这几个扩充依赖开源的opencv库,百科:OpenCV的全称是:Open Source 计算机 Vision Library。OpenCV是三个基于(开源)发行的跨平台Computer视觉库,能够运作在Linux、Windows和Mac OS操作系统上。它轻量级并且快捷——由一文山会海 C 函数和一些些 C++ 类构成,同时提供了Python、Ruby、MATLAB等语言的接口,完成了图像管理和Computer视觉方面包车型大巴广大通用算法。
回去正题,tclip那一个小程序,只用到了opencv中一小部分功用,就是图片明显性区域的辨认。
切实的剪裁算法,不做多的切磋。
近期的标题是,想达成从内存中通过PHP读取图片的二进制数据(那部分数量是先计划好的)传递给opencv,通过查看opencv的API文书档案,见到了imdecode方法,能够从内部存款和储蓄器中载入图片。那么能够缓慢解决那几个主题素材了。
至于设置tclip扩张的介绍:https://github.com/exinnet/tclip
不过要细心的是,opencv-2.4.9应该有bug,编写翻译不成功,别的ubuntu-14.0.4的编写翻译安装之后调用tclip函数报错,我测量检验的本子是:

Tclip 用于图片裁剪,有以下特征:

centos-6.4
PHP-5.4.31
opencv-2.4.4

能开展人脸识别。图片中有面部,将机关视为人脸区域为主要区域,将不会被裁剪掉。
自动识别另外首要区域。倘诺图片中未识别出人脸,则会基于特征布满总结出重区域。
简单来讲,自动识别图片中的主要区域,何况在图纸裁剪时保留主要区域。
源码地址:

例子

安装opencv

设置步骤:

依赖github上的证实,在CentOS上安装没不通常,但在本身的MacOS上就挂了。

 代码如下

先是遭遇的标题正是,opencv安装不过去。辛亏,上github下载最新的opencv-2.4.11 安装成功。

源码下载:
下载opencv源码:
下载Tclip源码:


安装opencv2:
此增添正视于opencv2.0 之上版本。由此安装前先安装opencv。opencv的设置步骤如下:
安装进程中有别的疑窦能够加qq 179815944叩问。
1.设置如下重视包: gtk+ gtk+-devel pkgconfig libpng zlib libjpeg libtiff cmake
一旦是centos能够举行如下命令举办设置正视包:
yum install gtk+ gtk+-devel pkgconfig libpng zlib libjpeg libtiff cmake
2.安装opencv2,步骤如下:
解压安装包
cd 走入安装包文件夹内。
cmake CMakeLists.txt
make && make install
vim /etc/profile
在乎,在编写翻译opencv时,要使用gcc的4.4版本只怕以上。不然会报错。
3.设相关遭遇变量
在 unset i 前增加
export PKG_CONFIG_PATH=/usr/lib/pkgconfig/:/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH
维持退出后,执行如下命令
source /etc/profile
echo “/usr/local/lib/” > /etc/ld.so.conf.d/opencv.conf
ldconfig
安装php图片裁剪tclip扩大
cd 到源代码目录中的php_ext文件夹
phpize
./configure
make
cp modules/tclip.so 到 extension 目录
修改php.ini。加入 extension=tclip.so
重启fpm
安装命令行
假诺想行任务令行格局,能够拓展如下安装
cd 步入安装包soft文件夹内
chmod +x ./tclip.sh
./tclip.sh
接纳方式求证
率先种:在php中图纸裁剪使用格式:
tclip(文件原路线,裁剪后的图样保存路线,裁剪后的图片宽度,裁剪后的图纸中度)
示例:
$source_file = “/tmp/a.jpg”;
$dest_file = “/www/a_dest.jpg”;
$width = 400;
$height = 200;
$ret =tclip($source_file, $dest_file, $width, $height);
奉行成功$ret 为true,不然为false
第二种:命令行
参数表明:
-s 原图路线
-d 裁剪后的图纸保存路线
-w 裁剪后的图样宽度
-h 裁剪后的图纸中度
./tclip -s a.jpg -d a_dest.jpg -w 400 -h 200

下载地址:

终极,即使PHP中一度直接可以传递图片的二进制数据了,可是开采opencv源码中,也会先将二进制数据保存到八个有时文件,再读取的。而且在opencv-2.4.2本子中不时文件不会被剔除,那就有一点坑了。不过还是能减掉PHP的逻辑,所以帮忙二进制的图纸数据依旧有须求的。

采用当前新型版本 OpenCV 2.4.11

设置信赖

在安装opencv以前,先安装一些凭仗包:

复制代码 代码如下:

brew install gtk+  pkgconfig libpng zlib libjpeg libtiff cmake

唤醒: brew的设置使用请参考

安装opencv

起始设置 opencv:

复制代码 代码如下:

tar zxf opencv-2.4.11.tar.gz
cd opencv-2.4.11
cmake CMakeLists.txt
make && make install

安装php tclip

先下载:

然后继续:

复制代码 代码如下:

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 作者的页面上

评价中,也许有网上基友遭遇了邻近的主题素材,建议修改章程为:

将 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

得手安装完毕。

以上所述正是本文的全体内容了,希望我们能够欣赏。

请你花一点时刻将稿子分享给您的爱人依然留下商量。大家将会由衷感激您的支持!

你只怕感兴趣的小说:

  • MacOSX10.11设置VMware Tools图像和文字详解
  • macOS Sierra安装Apache2.4+PHP7.0+MySQL5.7.16
  • 详解Asp.Net Core 发布和布局( MacOS + Linux + Nginx )
  • macOS安装Solr并索引MySQL
  • MacOS无法挂载NFS Operation not permitted错误消除办法

本文由金沙澳门官网送注册58发布于计算机网络,转载请注明出处:PHP的图样裁剪扩充Tclip

关键词: