1. 程式人生 > >windows下cmake + qt + mingw編譯opencv3.4.0和opencv_contrib3.4.0

windows下cmake + qt + mingw編譯opencv3.4.0和opencv_contrib3.4.0

1. 環境

(1) Windows 10  64bit

(2) Qt5.6.2, 安裝路徑:C:\Qt\Qt5.6.2\....,如下圖所示:


(4) Cmake 3.9.0-rc5

2. 準備原始碼

(1) opencv: https://github.com/opencv/opencv/tree/3.4.0

(2) opencv_contrib module: https://github.com/opencv/opencv_contrib/tree/3.4.0

3. 有效的Tips

(1) 保持Cmake執行,直到opencv和opencv_contrib編譯完成

(2) 勾選Cmake中的"group"和“Advanced”選項,能夠看到全部的配置資訊

(3) 配置系統環境變數,如下圖所示:

(4) 請務必先整篇閱讀後開始操作

 

3. 安裝步驟

(1) cmake配置

(1.1) 原始檔配置和目標檔案的路徑

(1.2) 點選"configure" ,配置編譯器,如下圖我們利用QT的mingw編譯器進行編譯

點選"Next", 如下圖所示: 分別配置gcc和g++編譯器: 路徑分別為(C:/Qt/Qt5.6.2/Tools/mingw492_32/bin/gcc.exe和C:/Qt/Qt5.6.2/Tools/mingw492_32/bin/g++.exe)


(1.3) 第二次點選"configure", 會顯示如下圖的介面,此時會下載一些庫檔案,請保持穩定的網路


(1.4) 當完成前述步驟時,需要完成以下勾選:

(A) 展開“With”選項,勾選“With_QT”和“With_OpenGL”,如下圖所示:

(B) 展開"Enable"選項, 取消"ENABLE_PRECOMPILED_HEADERS",如下圖所示:

同時需要修改“cap_Dshow.cpp”的檔案,修改是在“#include "cap_dshow.hpp”前加巨集定義“#define NO_DSHOW_STRSAFE”,如下圖所示:


(C) 展開“OPENCV”, 配置opencv_contrib的檔案路徑,如下圖所示,注意路徑一定要到“modules”資料夾


(1.4) 第三次點選"configure",會顯示一些錯誤,與有關QT和OpenGL的一些錯誤,完成如下配置:


(1.5) 第四次點選“Configure”,此時應該能夠正確配置:

(1.6) 如果顯示"Configuring done",此時,點選"Generate",直到顯示"Generating done"

(2) cmd介面切入目錄: mingw32-make,等待編譯即可,正確編譯截圖如下:


(3) mingw32-install ,等待即可,正確執行則如下圖所示:


(5) qt中使用配置, 將“C:/opencv-3.4.0/build/install"、"C/opencv-3.4.0/build/bin"、“C:/opencv-3.4.0/build/lib”拷貝出來,即為可使用的靜態庫和動態庫; 假設我們拷貝到了如下路徑下:“C:/opencv-3.4.0/release/install”、“C:/opencv-3.4.0/release/bin”、“C:/opencv-3.4.0/release/lib”,那麼,在QT的.pro檔案中配置如下:


(6) 將動態連線庫的路徑加入系統環境變數Path中,如下圖所示,重啟電腦,即可。


(7) 測試

#include <iostream>
#include <string>
#include <opencv2/opencv.hpp>
#include <opencv2/highgui.hpp>
#include <opencv2/imgproc.hpp>

using namespace std;
using namespace cv;

int main(int argc, char *argv[])
{
    string inputName = "cat.jpg";
    Mat img = imread(inputName);
    imshow("img", img);
    waitKey(0);

    return 0;
}
效果如下:


(8) 特別說明:

在我的編譯過程中,出現編譯“C:\opencv-3.4.0\opencv-3.4.0\modules\python\python3”不通過的問題,如下圖所示:

我的解決方法是: 將“BUILD"選項中的Build_opencv_python3取消勾選, 如下圖所示:

如果想要嘗試,也可以先不勾選,進行編譯,如果能夠通過更好(並將方法告訴我); 如果不能通過,可以在Cmake中重新配置,注意,此時不要將“C:\opencv3.4.0\build”中的檔案刪除,只需重新配置,點選“configure”,然後直接在cmd中直接執行“cmake-make”即可,其他類似的錯誤可以按照相同的方法處理。