今天項目須要用到OpenCV的部分功能,因此開始接觸一下OpenCV,本人也是個初學者,因此有一操做現階段也沒法給出明確的解釋,固然這裏也借鑑了一些別人的經驗。若是有什麼錯誤,懇請指正。html
這裏是針對mingw版本的Qt。git
本文中所出現的文件地址只是做爲參照,具體配置過程當中,根據本身的配置狀況填寫。github
在安裝過程當中遇到的一些問題。ide
一、首先安裝Qt,CMake,解壓OpenCV測試
二、配置環境變量Pathui
將Qt安裝目錄下的「E:\Qt\Qt5.11.1\5.11.1\mingw53_32\bin」以及「E:\Qt\Qt5.11.1\Tools\mingw530_32\bin」添加到環境變量中。this
將CMake的「E:\Program Files\CMake\bin」添加到環境變量中。spa
設置完環境變量後重啓。.net
三、對OpenCV進行CMake3d
①在1處「Where is the source code:」選擇OpenCV解壓的源文件位置。
在2處「Where to build the binaries:」選擇自定義的空文件用於保存生成的對象。
②點擊左下角的「Configure」。出現以下界面。
選擇「MinGW Makefiles」。(若是在以前未添加Qt的環境變量,選擇「MinGW Makefiles」,在以後的配置會出錯)
選擇「Specify native compilers」, 而後「Next」。彈出編譯器配置界面。
將Qt安裝目錄下的
E:/Qt/Qt5.11.1/Tools/mingw530_32/bin/gcc.exe
E:/Qt/Qt5.11.1/Tools/mingw530_32/bin/g++.exe
分別填入對應的文件路徑。
③點擊「Finish」。
開始進行配置。
配置完成。
④勾選「WITH_QT」,「WITH——OPENGL」,「ENABLE_CXX11」。點擊「Configure」。
⑤檢查配置完成後,紅色區域的位置信息是否正確。點擊「Configure」。
顯示「Configuring done」,配置完成。
⑥點擊「Generate」。
此時CMake界面操做階段結束。
四、打開CMD,進入前面填寫的目標文件位置(「E:/OpenCV/mytest」)。輸入mingw32-make開始編譯,(也可以mingw32-make -j 4 經過設置編譯的核數加快進程,只不過在打印錯誤信息的時候顯示有問題,第一次仍是用mingw32-make,明確錯誤信息)
五、編譯完成後,輸入mingw32-make install開始安裝。
六、配置OpenCV環境變量
將OpenCV加入環境變量中。
七、測試
新建一個Qt Widgets Application工程,在.pro文件最後添加如下代碼
INCLUDEPATH += E:\OpenCV\mybuild\install\include LIBS += E:\OpenCV\mybuild\install\x86\mingw\bin\libopencv_core346.dll LIBS += E:\OpenCV\mybuild\install\x86\mingw\bin\libopencv_highgui346.dll LIBS += E:\OpenCV\mybuild\install\x86\mingw\bin\libopencv_imgcodecs346.dll LIBS += E:\OpenCV\mybuild\install\x86\mingw\bin\libopencv_imgproc346.dll LIBS += E:\OpenCV\mybuild\install\x86\mingw\bin\libopencv_features2d346.dll LIBS += E:\OpenCV\mybuild\install\x86\mingw\bin\libopencv_calib3d346.dll
而後在MainWindow.cpp中加入以下代碼
// read an image cv::Mat image = cv::imread("d://1.jpg", 1); // create image window named "My Image" cv::namedWindow("My Image"); // show the image on window cv::imshow("My Image", image);
運行結果
安裝過程參考:
https://wiki.qt.io/How_to_setup_Qt_and_openCV_on_Windows
https://blog.csdn.net/zong596568821xp/article/details/78627755
遇到的問題:
一、CMake opencv時Download: opencv_ffmpeg.dll、ippicv等失敗的解決方法
配置階段出現問題,能夠查看目標文件夾中的CMakeDownloadLog.txt文件。
①進行安裝的時候,沒法從Github下載,我經過修改Hosts文件,使CMake正常下載,修改Hosts文件的方法自行百度。
②根據CMakeDownloadLog.txt中的提示信息,和查看ffmpeg的.cmake文檔。
CMake後會發現opencv-source根目錄下會出現一個.cache的文件夾,裏面有須要下載的內容,若是下載失敗全部的內容都是0KB。以下圖
在源文件E:\OpenCV\opencv-3.4.6\opencv-3.4.6\3rdparty\ffmpeg中的ffmpeg.cmake中記載有ffmpeg的版本。而後從https://github.com/opencv/opencv_3rdparty/branches/all下載,放到opencv-source根目錄下的.cache的文件夾中,並根據對應的下載失敗的內容進行重命名。
參考:
http://www.javashuo.com/article/p-kcmodewj-kn.html
https://blog.csdn.net/yiyuehuan/article/details/52951574
二、顯示的錯誤信息爲nullptr未定義之類的。
在在 cmake-gui 編譯配置中:勾選 ENABLE_CXX11
而後從新「Configure」->"Generate">>"mingw32-make"。
參考:https://blog.csdn.net/qq_40560275/article/details/83118088
三、未聲明「sprintf_instead_use_StringCbPrintfA_or_StringCchPrintfA」
在OpenCV源碼的文件\modules\videoio\src\cap_dshow.cpp文件中,在」#include 」DShow.h「「前面加一行」#define NO_DSHOW_STRSAFE「。
#define NO_DSHOW_STRSAFE #include "DShow.h"
而後從新「Configure」->"Generate">>"mingw32-make"。
四、「D3D11_TEXTURE2D_DESC「was not declared in this scope
我這裏是直接在配置裏面不勾選」WITH_OPENCL_D3D11-NV「。
而後從新「Configure」->"Generate">>"mingw32-make"。
參考:https://blog.csdn.net/huihut/article/details/81317102
還有一些我沒遇到的問題,這裏記錄幾個問題處理的參考。
https://visp-doc.inria.fr/doxygen/visp-daily/tutorial-install-win10-mingw64.html