Qt5.11.1配置OpenCV3.4.6流程以及遇到的問題

今天項目須要用到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

https://blog.huihut.com/2017/12/03/CompiledOpenCVRunInQt/

相關文章
相關標籤/搜索