CentOS6 - Linux下安裝OpenCV
項目需要做人臉識别,通過人臉進行自動切圖,開源項目就OpenCV比較全的文檔,且有Java的實作方案,是以就使用OpenCV進行開發。不過OpenCV進行人臉識别需要安裝很多庫檔案和依賴,過程繁瑣且複雜,為了避免再次入坑,下面就把這個過程記錄下來,以備不時之需。
1. 安裝依賴
Java
1.下載下傳
下載下傳位址可以參考我的這篇文章jdk1.7 64位官方下載下傳位址
2.安裝
3.環境變量配置
rpm -ivh jdk-7u80-linux-x64.rpm
4.重新整理環境變量在檔案後加入
vim /etc/profile
export JAVA_HOME=/usr/local/jdk
export PATH=$JAVA_HOME/bin:$PATH
source /etc/profile
Ant
1.下載下傳
CSDN下載下傳位址
官網下載下傳位址 http://ant.apache.org/
2.解壓
3.改名
zip apache-ant-1.9.9-bin.zip
cd apache-ant-1.9.9-bin
4.環境變量配置
mv apache-ant-1.9.9 ant
5.重新整理環境變量在檔案後加入
vim /etc/profile
export ANT_HOME=/usr/local/ant
export PATH=$ANT_HOME/bin:$PATH
source /etc/profile
ImageMagick
1. 更新阿裡雲源(可選)
如果你通過yum的方式安裝
ImageMagick
提示找不到包或者下載下傳比較慢,建議将伺服器的源改為阿裡雲的源
如果需要更新阿裡雲源,可以參考我的另外一篇文章CentOS安裝阿裡雲的源
2. yum安裝
3. 驗證
yum -y install ImageMagick ImageMagick-devel
convert -version
GraphicsMagick
1. 下載下傳GraphicsMagick包
CSDN下載下傳位址
官網位址 http://www.graphicsmagick.org/index.html
2. 解壓
3. 安裝依賴
xz -d GraphicsMagick-1.3.26.tar.xz
tar -xf GraphicsMagick-1.3.26.tar
cd GraphicsMagick-1.3.26
4. 配置
yum install -y gcc gcc-c++ make cmake autoconf automake libpng-devel libjpeg-devel libtiff-devel jasper-devel freetype-devel libtool-ltdl ibtool-ltdl-devel* libtool-ltdl.x86_64 libtool-ltdl-devel.x86_64
5. 編譯&安裝
./configure '--prefix=/usr/local/GraphicsMagick-1.3.26' '--exec-prefix=/usr/local/GraphicsMagick-1.3.26' '--bindir=/usr/local/GraphicsMagick-1.3.26/bin' '--sbindir=/usr/local/GraphicsMagick-1.3.26/sbin' '--sysconfdir=/usr/local/GraphicsMagick-1.3.26/etc' '--datadir=/usr/local/GraphicsMagick-1.3.26/share' '--includedir=/usr/local/GraphicsMagick-1.3.26/include' '--libdir=/usr/local/GraphicsMagick-1.3.26/lib' '--libexecdir=/usr/local/GraphicsMagick-1.3.26/libexec' '--localstatedir=/usr/local/GraphicsMagick-1.3.26/var' '--sharedstatedir=/usr/local/GraphicsMagick-1.3.26/share/com' '--mandir=/usr/local/GraphicsMagick-1.3.26/share/man' '--infodir=/usr/local/GraphicsMagick-1.3.26/share/info' '--enable-libtool-verbose' '--with-included-ltdl' '--enable-shared' '--disable-static' '--with-modules' '--with-frozenpaths' '--without-perl' '--without-magick-plus-plus' '--with-quantum-depth=8' --enable-symbol-prefix
6. 配置環境變量
make && make install
在檔案尾部加入
vim /etc/profile
重新整理環境變量
export GMAGICK_HOME="/usr/local/GraphicsMagick-1.3.26"
export PATH="$GMAGICK_HOME/bin:$PATH"
LD_LIBRARY_PATH=$GMAGICK_HOME/lib:$LD_LIBRARY_PATH
export LD_LIBRARY_PATH
export IM4JAVA_TOOLPATH=/usr/local/GraphicsMagick-1.3.26/bin
7. 驗證
source /etc/profile
或者
gm
gm convert -list formats
安裝OpenCV
1. 安裝OpenCV依賴庫
yum install -y build-essential gcc gcc-c++ cmake git pkgconfig gtk+-devel gtk2-devel python python-pip python-devel python-numpy gimp-devel gimp-devel-tools gimp-help-browser libjpeg-devel libtiff-devel libpng-devel gstreamer-devel gstreamer-plugins-base-devel libv4l ffmpeg-devel mencoder flvtool2 libavc1394-devel libraw1394-devel libdc1394-devel jasper-devel jasper-utils zlib-devel unzip vim
2. 下載下傳
可以到官網下載下傳 選擇對應版本,我這裡是3.1.0
3. 解壓
先解壓,然後進入解壓目錄,建立
目錄,進入
build
目錄,準備預編譯
build
unzip opencv-3.1.0.zip
cd opencv-3.1.0
mkdir build && cd build/
4. 預編譯
通過cmake指令預先編譯一次,編譯完成後檢視輸出結果, 在
裡包含java這一項就表示預編譯成功
To be built
預編譯過程中,會卡在下載下傳
cmake -DCMAKE_BUILD_TYPE=Release -DBUILD_SHARED_LIBS=OFF -DBUILD_EXAMPLES=OFF -DBUILD_TESTS=OFF -DBUILD_PERF_TESTS=OFF -DCMAKE_INSTALL_PREFIX=/usr/local ..
這個檔案上,因為這個檔案有36.5M,而且是國外的網站,是以會非常慢,這裡有一個解決方案,就是先終止預編譯,然後手動下載下傳後,放入
ippicv_linux_20151201.tgz
目錄, 然後去CSDN下載下傳位址 下載下傳, 也可以去官網擷取下載下傳位址,然後用迅雷下。 注意:linux-808b791a6eac9ed78d32a7666804320e目錄名稱是根據你的機器随機變化的,每個人的伺服器上
opencv-3.1.0/3rdparty/ippicv/downloads/linux-808b791a6eac9ed78d32a7666804320e/
linux-
後面可能不一樣.
5. 編譯
cmake完成後,在build目錄直接輸入
進行編譯,如果伺服器CPU核數比較多,可以在make後加入
make
使用8個線程同時進行編譯,加快編譯速度。
-j8
編譯過程可能出現異常,提示:
make -j2
出現這個異常,不要慌,可以通過修改
/usr/include/jasper/jas_math.h:117:22: error: ‘SIZE_MAX’ was not declared in this scope
/usr/include/jasper/jas_math.h
檔案源碼解決。
在
的頭部#include 的下面添加:
/usr/include/jasper/jas_math.h
#if ! defined SIZE_MAX
#define SIZE_MAX (4294967295U)
#endif
然後重新編譯就可以了。如果不行,請删除build目錄下的内容,重新預編譯、編譯就應該沒問題了
6. 安裝
編譯完成,就可以進行安裝,安裝過程是生成opencv對應的庫檔案,我這裡是java項目需要用到,是以也會順便生成java相關的庫檔案
指令執行完成,會在結果中看到
make install
目錄生成了兩個java相關的依賴庫檔案
/usr/local/share/OpenCV/java/
和
opencv-310.jar
, 當然,每個人的環境不同,可能目錄也不同,具體看日志輸出就行了。
libopencv_java310.so
/usr/local#ll /usr/local/share/OpenCV/java/
total 46416
-rw-r--r-- 1 root root 312685 Oct 11 17:49 opencv-310.jar
-rwxr-xr-x 1 root root 47213974 Oct 11 17:49 libopencv_java310.so