1. 程式人生 > >Linux下Opencv的安裝及配置使用

Linux下Opencv的安裝及配置使用

OpenCV是提供原始碼的,所以從這個角度來說,是不區分32或64位的。但是,OpenCV裡面也會有一些已經編譯好了的庫或執行檔案,那麼這個是要區分32或64位的。

一、安裝

1 安裝cmake及一些依賴庫

sudo apt-get install cmake

sudo apt-get install build-essential

sudo apt-get install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev
sudo apt-get install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev


2 安裝OpenCV

從官網下載opencv並解壓,cd命令進入opencv的目錄(原始碼的目錄)

mkdir build

cd build

cmake ..
sudo make
sudo make install


備註:

新增路徑:

cmake -DOPENCV_EXTRA_MODULES_PATH=../opencv_contrib/modules -DEIGEN_INCLUDE_PATH=/usr/local/include/Eigen/


make 時error:

/Users/ajx/Downloads/opencv/opencv_contrib/modules/rgbd/src/odometry.cpp:41:10: fatal error: 'unsupported/Eigen/MatrixFunctions' file not found
#include <unsupported/Eigen/MatrixFunctions>

解決辦法:

sudo apt-get install libeigen3-dev  //預設安裝路徑是:/usr/include/eigen3

sudo cp -r usr/include/eigen3/unsported  usr/local/include/

 

二、配置

1 將opencv的庫加入到路徑,從而讓系統可以找到

  1. 第一步

    用vim開啟/etc/ld.so.conf,注意要用sudo開啟獲得許可權,不然無法修改,
    如:sudo vim /etc/ld.so.conf,在檔案中加上一行 /usr/loacal/lib,/user/loacal是opencv安裝路徑 就是makefile中指定的安裝路徑
    加了之後的變為

  2. 第二步

    再執行sudo ldconfig,
    修改bash.bashrc檔案,sudo vim /etc/bash.bashrc
    在檔案末尾加入:
    PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig
    export PKG_CONFIG_PATH
    加後的圖:

  3. 第三步

然後source /etc/bash.bashrc


三、測試使用

#include <iostream>
#include <cstdio>
#include <opencv2/opencv.hpp>
#include <unistd.h>
using namespace std;
using namespace cv;


int main()
{
        VideoCapture cap; //定義視訊物件 
        cap.open(0); //0為裝置的ID號 
        Mat frame;

        cap >> frame;
        if(frame.data)
        {
                cout << "!0"<<endl;
                imshow("frame",frame);
                waitKey(500);//等待按下函式:引數如果寫負數或者0。當顯示圖片後,按下任意鍵後程序退出。如果引數寫為3000就是3秒後程序自動退出
        }
        //waitKey(30); //0.03s獲取一幀

        imwrite("./1.jpg",frame);
        //cout <<hex<< frame <<endl;

        /*
           int c ;
           Mat img1 = imread("2.jpg");
           namedWindow("影象顯示");
           while(1)
           {
           imshow("影象顯示",img1);
           c = waitKey(0);
           imwrite("33.jpg",img1);
           if(c==27 || char(c)=='q' || char(c) == 'Q')
           break;
           }
         */
        return 0;
}
~                                                                                                                                                                    
~          

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

 


四、檢視版本號

命令:pkg-config --modversion opencv

結果:2.4.10


五、資料查詢

百度輸入“opencv”出現下圖,可以根據需要點選你需要的資料,比如使用說明書。


六、呼叫多個版本中指定的opencv版本

http://www.linuxdiyf.com/linux/21233.html (多個版本的管理)


解決方案:

現在討論Ubuntu14.04下分別使用CMake和Makefile編譯執行帶Opencv程式的兩種解決方案。


1.CMake下指定Opencv版本

關鍵檔案:OpenCVConfig.cmake。在opencv編譯好後,所在目錄中一般會有一個叫OpenCVConfig.cmake的檔案,這個檔案中指定了CMake要去哪裡找OpenCV,其.h檔案在哪裡等,比如其中一行:


方法:

注意,將其新增在project(MyProjectName)之前。

如CMakeLists.txt內容如下:
cmake_minimum_required(VERSION 2.8)
set(OpenCV_DIR "/home/ubuntu/src/opencv-3.1.0/build")
project( camera )


2.Makefile下指定Opencv版本

關鍵檔案:opencv.pc 。在Makefile下,應該是可以在其中詳細設定Opencv路徑。

我們常常使用pkg-config --modversion 來檢視指定庫的版本,比如檢視opencv版本pkg-config --modversion opencv。其實pkg-config顯示的資訊來自於這個庫對應的.pc檔案,比如安裝了opencv後,我們可以在/usr/local/lib/pkgconfig/ 資料夾下找到opencv.pc或者../opencv2410/build/unix-install/opencv.pc


方法:

如果我在/usr/local/lib/pkgconfig資料夾目錄下新增opencv-3.1.0.pc檔案,是否就可以將版本指向opencv-3.1.0l了呢?答案是肯定的。


備註:

g++ detect.cpp ImageProcessClass.cpp CommonFunClass.cpp CameraProcess.cpp -o Detect `pkg-config opencv halcon --cflags --libs`


參考:https://blog.csdn.net/jay463261929/article/details/53580538 

       https://blog.csdn.net/cv_you/article/details/77341631