本文使用的軟件包:
QT、cmake、opencv庫
由於主要參考的是以下兩個博客,這里就根據他們的內容關鍵點截圖加上一些自己遇到的問題來寫,具體細節可參考下面兩個鏈接。
1. https://blog.csdn.net/luolaihua2018/article/details/111409213
2. https://blog.csdn.net/ltc0106/article/details/100189313
一、軟件安裝
(1)QT
下載地址:http://download.qt.io/archive/qt/5.13/5.13.0/

QT安裝具體細節見博客2,注意以下幾步


同時注意系統變量的添加,博客二中有詳細說明。
(2)cmake
下載地址: https://cmake.org/download/

選最新版本即可
(3)opencv
下載地址: https://opencv.org/releases/

根據自己的系統選擇
二、使用cmake編譯opencv
(1)根據自己的opencv版本號選擇解壓

(2)等待源代碼解壓完成

(3)解壓完成后,啟動剛剛安裝好的Cmake程序,自己填寫OpenCV剛剛解壓的源碼目錄,以及自己新建一個文件夾用於存放編譯完成的opencv,填寫到下一行的編譯目標目錄,然后點擊下方的configure按鈕進行第一次配置。

(4)選擇MinGw Makefiles,然后選擇第二項,完成后點擊下一步

(5)指定c編譯器和c++編譯器的路徑,請找到你的QT目錄\Tools\mingw730_64\bin下的gcc.exe和g++.exe程序,依次對應填寫。

(6)等待第一次configure完成。(configure到最后可能會下載opencv_videoio_ffmpeg相關庫文件,如果沒有梯子的話可能會比較久)

(7)configure完成后,需要配置一些參數。
在第三行的Search中,搜索WITH_QT,打勾。

搜索WITH_OPENGL,打勾。

搜索ENABLE_PRECOMPILED_HEADERS,取消打勾。

搜索QT5_DIR,將“你的QT路徑\5.13.0\mingw73_64\lib\cmake\Qt5”填進去。 例如我的是:D:\WorkApp\QT\5.13.0\mingw73_64\lib\cmake\Qt5,完成以上操作后點擊Configure進行第二次Configure。

(8)第二次Configure完成后,點擊Generate生成opencv編譯文件到目標目錄。

(7)(8)步中可能會遇到不同的情況,此時可根據具體情況google or百度,直到Configure done.
(9)Generating done之后,打開win10的Windows PowerShell命令行(按住Shift鍵,然后在桌面或文件資源管理器窗口空白處點擊右鍵,在彈出的右鍵菜單中選擇“在此處打開PowerShell窗口”即可打開Windows PowerShell)如圖:,輸入命令cd 進入到你的opencv的目標目錄,然后開始編譯(這次編譯比較耗時間,具體耗時長短由你的CPU性能而定)。QT中的MinGw組件務必選取正確,如果選擇了其他的這一步可能會出現無法編譯。
編譯命令:
mingw32-make.exe -j(線程數量)
線程數量根據自己電腦cpu性能酌情填寫。4核CPU就填4,8核心就填8,以此類推,例如我是8核心的就填“mingw32-make.exe -j8”即可,如果直接mingw32-make.exe命令編譯的話會很慢,在用四線程或者更高線程時會快很多,但是可能會出現各種錯誤,出現錯誤時可修改線程數繼續編譯,如果仍不成功需自行google or 百度解決方案,參考博客1和2中給出了一些常見問題的解決方法。這也是整個配置過程中最復雜的一步。

(10)漫長的等待后,終於完成了,完成之后輸入命令“mingw32-make.exe install”完成最后的編譯,完成后,opencv庫的編譯已經成功。
mingw32-make.exe install

(11)將opencv編譯好的庫文件路徑加入系統變量path中。

(12)最后再添加一個新的環境變量名字 OPENCV_SDK_DIR 變量值就是你編譯好的opencv目錄的install文件夾的路徑,示例如下圖

(四)在QT中進行測試
每次在QT中新建文件時要注意文件路徑必須是英文,打開.pro文件,加入
INCLUDEPATH += D:\opencv\opencv\opencv-build\install\include\opencv2 \ D:\opencv\opencv\opencv-build\install\include LIBS += D:\opencv\opencv\opencv-build\install\x64\mingw\lib\libopencv*.a
根據自己的include和lib文件路徑進行選擇!*.a表示所有不同后綴的文件

QT中一些常見的頭文件:
#include <opencv2/highgui/highgui_c.h> #include <opencv2/opencv.hpp> #include <opencv2/highgui/highgui.hpp> #include <opencv2/imgproc/imgproc.hpp> #include <opencv2/core/core.hpp> using namespace cv;
測試程序(打開一張圖片):
int main() { cv::Mat img; img = cv::imread("C:\\Users\\study\\Pictures\\1.png");//參數1:圖片路徑。參數2:顯示原圖 namedWindow("窗口1",CV_WINDOW_NORMAL); /*注釋 參數1:窗口的名字 參數2:窗口類型,CV_WINDOW_AUTOSIZE 時表明窗口大小等於圖片大小。不可以被拖動改變大小。 CV_WINDOW_NORMAL 時,表明窗口可以被隨意拖動改變大小。 */ imshow("窗口1", img);//在“窗口1”這個窗口輸出圖片。 waitKey(5000);//等待5秒,程序自動退出。改為0,不自動退出。 return 0; }
成功顯示即大功告成!
