1. 程式人生 > >centos7下opencv3.4.1 的安裝和編譯全解

centos7下opencv3.4.1 的安裝和編譯全解

opencv是個跨平臺計算機視覺庫, 始於Intel的研究中心,並且在俄羅斯得到實現和優化,但intel現在似乎又是主要的維護者。

一、下載和安裝

1、下載網址:https://opencv.org/     注意系統版本。

2、linux下依賴庫安裝

正式安裝opencv之前,需要安裝好opencv編譯的依賴包,列舉如下:

(1)cmake

apt-get install cmake

(2)essential

在ubuntu環境下: apt-get install build-essential

在centos環境下:  yum install gcc gcc-c++ kernel-devel 安裝gcc-essential

                     yum install gcc-gfortran 安裝gfortran

安裝完後,可以用 gcc -v 、g++ -v 和 fortran -v 檢視版本。

 (3)gtk2.0

在ubuntu環境下:apt-get install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev

在centos環境下:(安裝git)yum install git

(安裝gtk 圖形化介面庫)安裝必要檔案包:yum install libgnomeui-devel

  安裝必要元件:yum install gtk2 gtk2-devel gtk2-devel-docs

  安裝可選元件:yum install gnome-devel gnome-devel-docs 

gtk測試用例

#include <gtk/gtk.h>  
  
int main(int argc, char *argv[])  
{  
    GtkWidget *windows;  
    gtk_init(&argc,&argv);  
      
    windows = gtk_window_new(GTK_WINDOW_TOPLEVEL);  
    gtk_widget_show(windows);  
  
    gtk_main();  
  
    return 0;  
}  


gcc -o 1 1.c `pkg-config --libs --cflags gtk+-2.0`
./1 若出現對話方塊表示成功!

(4)pkg-config

cd /opt/pkg wget http://pkgconfig.freedesktop.org/releases/pkg-config-0.29.2.tar.gz 

tar xvf pkg-config-0.29.2.tar.gz cd pkg-config-0.29.2 

./configure --prefix=/usr/local/pkg-config --with-internal-glib 

make 

make instal

驗證檢視環境十分OK pkg-config --version

3、ffmpeg元件安裝

主要依賴的有 libavcodec-dev libavformat-dev libswscale-dev,這些庫都是FFmpeg 開源庫中的,可以通過以下兩種方法獲得。

(1)直接安裝ffmpeg-devel

1、先安裝epel擴充套件源 
yum -y install epel-release

2、安裝其他擴充套件源 
yum localinstall –nogpgcheck https://download1.rpmfusion.org/free/el/rpmfusion-free-release-7.noarch.rpm 
yum localinstall –nogpgcheck https://download1.rpmfusion.org/nonfree/el/rpmfusion-nonfree-release-7.noarch.rpm 
rpm –import http://li.nux.ro/download/nux/RPM-GPG-KEY-nux.ro 
rpm -Uvh http://li.nux.ro/download/nux/dextop/el7/x86_64/nux-dextop-release-0-1.el7.nux.noarch.rpm

3、最後安裝ffmpeg 
yum -y install ffmpeg ffmpeg-devel

4、測試ffmpeg有沒有安裝成功 
輸入命令ffmpeg -version

(2)編譯原始碼ffmpeg

1、下載:在官網上下載FFmpe原始碼包,解壓;

2、配置:生成makefile,具體如下:./configure --enable-libopencv --enable-swscale --enable-avresample--enable-gpl --enable-shared;

3、編譯:執行make –j8進行並行編譯;

4、安裝:執行make install。

5、新增ffmpeg到環境變數執行如下命令:

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

export PKG_CONFIG_PATH

備註:如果不執行,Opencv在cmake的時候不能找到對應的ffmpeg庫

4、安裝opencv其他依賴項

yum install python-devel numpy
yum install libdc1394-devel
yum install libv4l-devel
yum install gstreamer-plugins-base-devel

5、編譯和安裝opencv

(1)opencv原始碼編譯和安裝

$cd opencv  
$madir build     
$cd build
  
$cmake -D WITH_TBB=ON -D WITH_EIGEN=ON ..    
$cmake -D BUILD_DOCS=ON -D BUILD_TESTS=OFF -D BUILD_PERF_TESTS=OFF -D BUILD_EXAMPLES=OFF ..    
$cmake -D WITH_OPENCL=OFF -D WITH_CUDA=OFF -D BUILD_opencv_gpu=OFF -D BUILD_opencv_gpuarithm=OFF -D BUILD_opencv_gpubgsegm=OFF -D BUILD_opencv_gpucodec=OFF -D BUILD_opencv_gpufeatures2d=OFF -D BUILD_opencv_gpufilters=OFF -D BUILD_opencv_gpuimgproc=OFF -D BUILD_opencv_gpulegacy=OFF -D BUILD_opencv_gpuoptflow=OFF -D BUILD_opencv_gpustereo=OFF -D BUILD_opencv_gpuwarping=OFF ..    
$cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local ..  
  
$make  
  
$sudo make install

(2)opencv配置與載入動態庫

(1)路徑新增和載入
在centos7 系統中,
cd /etc/ld.so.conf.d
新增opencv.conf
新增opencv編譯產生的lib庫路徑到opencv.conf中,如下命令:
/bin/bash -c 'echo "/opt/opencv/lib64" > /etc/ld.so.conf.d/opencv.conf'

載入 ldconfig

注意在其他linux系統中可能有區別,但是意在讓系統知道opencv lib庫的路徑,能夠完成動態載入。

(2)新增PATH
輸入命令gedit /etc/bashrc 
在檔案末尾另起行加入PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig 
export PKG_CONFIG_PATH 
儲存退出 
輸入source /etc/bashrc使配置生效 
輸入updatedb更新資料庫

(3)pkg-config配置
預設的pkg搜尋連結路徑/usr/lib/pkgconfig,需要將opencv.pc拷貝到pkg的預設路徑下。
cp /opt/opencv/lib64/pkgconfig/opencv.pc /usr/lib/pkgconfig

到此,opencv的編譯、安裝和配置就算完成了,是不是很麻煩,裝的時候想打人的心都有了。可以通過檢視cmake時,ffmpeg是否新增編譯成功,以此驗證opencv是否已經安裝成功。

6、opencv測試

opencv原始碼庫samples 路徑下有豐富的測試用例。

cd ../samples/cpp/example_cmake

make

./opencv_example

執行後出現如下對話方塊,恭喜你,安裝成功了。

看到網上還有其他的測試用例,也新增到這裡。

//test.cpp
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>
 
int main(int argc,char *argv[])
{
	cv::Mat image;
	image=cv::imread("1.png");
	
	cv::namedWindow("1.png");
	cv::imshow("1.png",image);
 
	cv::waitKey();
	return 0;
}

g++ -g -o test test.cpp `pkg-config --cflags --libs opencv`

隨便找張圖,有對話方塊彈出原圖。(特地找了張治癒系)