国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > PHP > 正文

PHP tclip擴展調用opencv從內存中讀取及解析圖片數據的問題

2024-05-04 21:49:43
字體:
來源:轉載
供稿:網友

前兩天蠻說有一個PHP擴展,tclip圖片裁剪程序,Tclip致力于人臉識別和圖片顯著性區域的識別,它與其他圖片裁剪程序最大的不同之處在于,在裁剪后的圖片中保留人臉和其他圖片顯著性區域,不過還是圖片裁剪.

tclip這個擴展依賴開源的opencv庫,百科:OpenCV的全稱是:Open Source Computer Vision Library。OpenCV是一個基于(開源)發行的跨平臺計算機視覺庫,可以運行在Linux、Windows和Mac OS操作系統上,它輕量級而且高效——由一系列 C 函數和少量 C++ 類構成,同時提供了Python、Ruby、MATLAB等語言的接口,實現了圖像處理和計算機視覺方面的很多通用算法。

回到正題,tclip這個小程序,只用到了opencv中一小部分功能,就是圖片顯著性區域的識別.

具體的裁剪算法,不做多的研究.

現在的問題是,想實現從內存中通過PHP讀取圖片的二進制數據(這部分數據是先準備好的)傳遞給opencv,通過查看opencv的API文檔,看到了imdecode方法,可以從內存中載入圖片,那么可以解決這個問題了.

關于安裝tclip擴展的介紹:https://github.com/exinnet/tclip

但是要注意的是,opencv-2.4.9應該有bug,編譯不成功,另外ubuntu-14.0.4的編譯安裝之后調用tclip函數報錯,我測試的版本是:

centos-6.4,PHP-5.4.31,opencv-2.4.4

安裝步驟:

下載opencv源碼:http://www.bo56.com/download/opencv2.tar.bz2

下載Tclip源碼:

http://code.taobao.org/p/tclip/src/

https://github.com/exinnet/tclip

安裝opencv2:

此擴展依賴于opencv2.0 之上版本,因此安裝前先安裝opencv。opencv的安裝步驟如下.

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 進入安裝包文件夾內。

  1. cmake CMakeLists.txt 
  2.  
  3. make && make install 
  4.  
  5. vim /etc/profile 

注意:在編譯opencv時,要使用gcc的4.4版本或者之上,否則會報錯.

3.設相關環境變量

在 unset i 前增加

export PKG_CONFIG_PATH=/usr/lib/pkgconfig/:/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH

保持退出后,執行如下命令:

  1. source /etc/profile 
  2. echo “/usr/local/lib/” > /etc/ld.so.conf.d/opencv.conf 
  3. ldconfig 

安裝php圖片裁剪tclip擴展

cd 到源代碼目錄中的php_ext文件夾

  1. phpize 
  2. ./configure 
  3. make //開源軟件:Vevb.com 

cp modules/tclip.so 到 extension 目錄

修改php.ini,加入 extension=tclip.so

重啟fpm

安裝命令行

如果想使用命令行方式,可以進行如下安裝

cd 進入安裝包soft文件夾內

chmod +x ./tclip.sh

./tclip.sh

使用方法說明

第一種:在php中圖片裁剪使用格式:

tclip(文件原路徑,裁剪后的圖片保存路徑,裁剪后的圖片寬度,裁剪后的圖片高度)

示例:

  1. $source_file = “/tmp/a.jpg”; 
  2. $dest_file = “/www/a_dest.jpg”; 
  3. $width = 400; 
  4. $height = 200; 
  5. $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的邏輯,所以支持二進制的圖片數據還是有必要的.

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 贡山| 霍城县| 邛崃市| 汶上县| 冀州市| 宜君县| 瓦房店市| 柳江县| 灵武市| 涞源县| 彰化市| 高邑县| 获嘉县| 鄂托克旗| 锡林浩特市| 黄骅市| 平谷区| 应城市| 常州市| 温宿县| 左云县| 韶关市| 西宁市| 浮山县| 开化县| 巴塘县| 静宁县| 新和县| 亚东县| 普定县| 遵义县| 乐陵市| 和平区| 信阳市| 太保市| 枣强县| 轮台县| 永平县| 镇康县| 彭山县| 工布江达县|