OpenCV與Qt的環境搭建及Demo


前言:

前段時間寫了很多OpenCV的程序,雖然重點在算法上,但圖像窗口只能靠cvNamedWindow,效果很不理想。遂希望用Qt配合OpenCV使用,為我的程序建立圖形化界面。然而,依我對OpenCV的了解,環境配置一定是玄學,在解決了多個問題后,終於實現了Demo,在這里分享下我的成果,也感謝文末參考資料中的各位博主。

Qt在Windows環境下有兩種編譯方式,MinGW和msvc。msvc就是微軟的VC運行庫,只要安裝了Visual Studio就自帶了,在編譯速度上比較有優勢。缺點是,采用msvc編譯的話,需要單獨安裝cdb調試工具,才能在Qt中進行單步調試,本文將采用Win10 64bit+opencv 2.4.10 + Qt5.8.0 + VS2013配置環境。

第一步:安裝與配置OpenCV

在此,我們假設你的電腦上已經安裝了Visual Studio,本文將不再贅述。因為某些歷史問題,我的OpenCV的版本為2.4.10,如果你的版本也是2.x.x,那么你可以直接將2410替換成你的版本。

  1. http://opencv.org/downloads.html下載OpenCV並解壓到一個目錄中,我們假設解壓到了"D:\opencv\"中。
  2. 配置環境變量,在系統->高級系統設置->環境變量->系統變量中,找到Path,並添加"D:\opencv\build\x64\vc12\bin"。請注意上面路徑中的x64/vc12是需要根據你系統的版本自行替換的。

第二步:安裝與配置Qt

  1. https://account.qt.io/downloads下載Qt,並注冊賬戶、開始安裝。注意在安裝過程中需要選擇MSVC2013 64bit的kit,當然,這也需要根據你系統的版本進行替換。
  2. 新建一個Qt Widges Application,注意勾選VSVC2013。如果一切就緒,Qt Creator中應該為下圖所示。
  3. 可以看到,一個簡單的Qt項目由.pro文件,頭文件、源文件、界面文件組成,今后我們都將用到。我們需要從.pro文件開始修改

第三步:配置開發環境

.pro文件與vs中的屬性表類似,決定了項目需要的頭文件、依賴項的位置。在這一步我用來相當多的時間來找到合適的配置,一個典型的配置表如下所示:

 1 INCLUDEPATH += D:/opencv/build/include  2  
 3 CONFIG(debug, debug|release): {  4 LIBS += -LD:/opencv/build/x64/vc12/lib \  5 -lopencv_core2410d \  6 -lopencv_imgproc2410d \  7 -lopencv_highgui2410d \  8 -lopencv_ml2410d \  9 -lopencv_video2410d \ 10 -lopencv_features2d2410d \ 11 -lopencv_calib3d2410d \ 12 -lopencv_objdetect2410d \ 13 -lopencv_contrib2410d \ 14 -lopencv_legacy2410d \ 15 -lopencv_flann2410d 16 } else:CONFIG(release, debug|release): { 17 LIBS += -LD:/opencv/build/x64/vc12/lib \ 18 -lopencv_core2410 \ 19 -lopencv_imgproc2410 \ 20 -lopencv_highgui2410 \ 21 -lopencv_ml2410 \ 22 -lopencv_video2410 \ 23 -lopencv_features2d2410 \ 24 -lopencv_calib3d2410 \ 25 -lopencv_objdetect2410 \ 26 -lopencv_contrib2410 \ 27 -lopencv_legacy2410 \ 28 -lopencv_flann2410 29 }

請注意,在絕大多數情況下這個配置需要經過修改才能使用!與之前一樣,我們依然假設你的安裝目錄在"D:\opencv"所以如果不符,需要將三處目錄位置全部修改。另外開頭提到過,我的版本為2.4.10,所以如果版本不符,則需要將2410替換成其他數字。如果你的系統為x86,則需要修改目錄中的x64為x86。

在執行完上述操作后,需要點擊Qt Creator中的構建->執行qmake來更新程序的依賴。

 

 

 為了快速驗證環境是否配置正確,我們用一段簡單的程序來驗證可否使用opencv

 1 #include <iostream>
 2 #include <opencv2/opencv.hpp>
 3  
 4 using namespace std;  5 using namespace cv;  6  
 7 int main(int argc, char *argv[])  8 {  9      Mat image = imread("D:\\test.jpg"); 10      cvNamedWindow("window", CV_WINDOW_NORMAL); 11      imshow("window",image); 12      waitKey(0); 13  }

點擊運行之后,如果沒有任何錯誤,可以顯示圖片,那么環境安裝成功,如果出現錯誤,我們需要進行排查。

1.提示沒有找到opencv.hpp

這種情況說明include path設置有問題,請檢查是否正確。如果是正確的卻依然報錯,請重新qmake、構建程序。

2.提示多條LKN錯誤,”無法找到入口“之類的

這種情況通常是因為Lib設置錯誤,請檢查位置是否正確、版本是否正確。更正后重新qmake。

3.編譯可以通過,但是提示程序crash

如果確認沒有1、2中提到的問題,請檢查環境變量是否正確,如果正確卻依然報錯,請注銷用戶后重新登陸,使環境變量生效。

4.程序運行后崩潰,提示OpenCV Error: Assertion failed (size.width>0 && size.height>0)

如果確認你的test.jpg可以讀取,那么可能遇到了跟我一樣的問題。在Qt的.pro文件中,一定要注意區分debug模式帶d的lib與release模式的lib,如果兩者沒有用指令判斷,那么很有可能可以通過編譯運行,但會出現類似於這種的奇怪錯誤。解決方法綜合2、3,重點檢查lib文件與系統環境變量是否正確。版本錯誤、路徑錯誤、x86與x64錯誤都可能導致類似的問題出現。

第四步:配置debugger

1.安裝cdb

首先下載Debugging tools for Windows,選擇本機安裝,之后只選擇安裝Debugging Tools for Windows即可。

2.配置Qt

選擇工具->選項->構建和運行。如果沒有自動檢測到安裝的cdb,那么手動添加一個即可,只需要選擇cdb安裝位置中的cdb.exe即可,Qt會自動檢測到類型版本等數據。

最后,添加一個斷點試驗一下

如果一切正常,那么恭喜你已經成功配置了opencv。當然,一次成功的可能性很小,往往需要我們耐下心來,反復調試。


免責聲明!

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



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