從源碼安裝opencv


操作系統為Debian9,由於使用apt-get安裝在/usr/lib目錄下的opencv可能會造成一些項目上的頭文件錯誤問題,所以選擇了從源碼安裝。

選擇opencv3.4.1, 進入https://opencv.org/releases.html選擇3.4.1的sources下載。解壓后,進入該目錄。參照https://docs.opencv.org/3.4.1/d7/d9f/tutorial_linux_install.html 進行安裝。

步驟:

1.創建build目錄

mkdir build; cd build

2.配置

使用cmake-gui。這里由於是自定義安裝,所以不應該安裝網頁上的命令cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local .. 進行。否則,可能會裝到/usr/local目錄下。

選擇解壓后的opencv目錄路徑,和build目錄路徑。這里 set optional parameters不需要進行操作。

點擊configure,會出現很多配置選項,唯一需要修改的是install directory,具體的參數名不記得了,鼠標放在上面會有提示。把這個目錄修改為你想安裝到的目錄。如果不修改的話,默認是/usr/local。

點擊generate。

3. make 。

4.make install。這樣會把include, lib, bin, share這四個目錄安裝到在第二步中配置的安裝目錄里。

5驗證,生成.mat文件。

程序:

#include<iostream>
#include<fstream>
#include<opencv2/core.hpp>
#include<opencv2/highgui/highgui.hpp>
#include<opencv2/imgproc/imgproc.hpp>


using namespace std;

void writeMat(const cv::Mat& image, const string name){
    ofstream ofs(name, ios::out|ios::app);
    ofs<<image.cols <<" "<<image.rows<<" ";
    for(int i=0; i<image.cols*image.rows*3; i++){
        ofs<<(int)image.data[i]<<" ";
    }
    ofs.close();
}

int main(int argc, char** argv){
    string imageName("timg.jpeg");
    if(argc > 1){
        imageName = argv[1];
    }
    cv::Mat image;
    image = cv::imread(imageName, cv::IMREAD_COLOR);
    if(image.empty()){
        cout<<"Could not open or find the image" << endl;
        return -1;
    }
    string name = "temp.mat";
    writeMat(image, name);
    return 0;
}

編譯:g++ main.cpp -I opencv_install_directory/include -L opencv_install_directory/lib -lopencv_highgui -lopencv_core -lopencv_imgcodecs

后面的-lopencv_core -lopencv_imgcodecs需要加上,否則會報錯:

/usr/bin/ld: /tmp/cc9NW3Sj.o: undefined reference to symbol '_ZN2cv6imreadERKNS_6StringEi'
//home/benxu/Documents/Workspace/opencv/install/lib/libopencv_imgcodecs.so.3.4: error adding symbols: DSO missing from command line
collect2: error: ld returned 1 exit status。

這里加上后,還是會報錯:類似於這樣

openCV program compile error “libopencv_highgui.so.3.4: cannot open shared object file: No such file or directory” in ubuntu 12.04

雖然在 opencv_install_directory/lib中已經包含了libopencv_highgui.so.3.4文件,不過它是一個引用鏈接,指向libopencv_highgui.so.3.4.10。

解決辦法參考網址:https://stackoverflow.com/questions/12335848/opencv-program-compile-error-libopencv-core-so-2-4-cannot-open-shared-object-f

這里需要指出的是,在用戶安裝了一個新的動態鏈接庫時,需要手工運行ldconfig命令。

在/etc/ld.so.conf目錄下新建opencv.conf,在里面添加:opencv_install_directory/lib路徑。

運行:ldconfig -v。

然后再運行上面的編譯命令,即可順利執行。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM