最近打算做雙目攝像頭空間坐標定位,用matlab已經很快搞通了,打算在QT里面用openCV把這個程序實作。
因為今后打算在跨平臺上實作,所以QT+Cmake+MinGW32來編譯。
查了網上的很多帖子,發現做不下去,報錯太多,繼續查帖子。中間很多周折,總算搞定了,現在把這個程序寫出來,
把下載不了的github網址的組態檔也都上傳了,也算是回報那些無私慷慨提供學習資料的技術貼。
之前已經在QT官網上下載好了QT5.9, 這里就不再多說了。
0. 編譯環境
win10-64bit
Qt5.9.7
MinGW-5.3.0-32bit
CMake-3.18 (到Cmake官網去下載,解壓后放到一個目錄下, C:\Users\XX \Desktop\MyQt\cmake3.18)

OpenCV-4.5 (下載地址:https://opencv.org/ 進去后右下角點擊source forge 那個圓按鈕,直接跳出適合你電腦的版本去下載,下載后運行這個自解壓檔案,放到目錄下。 C:\Users\XX\Desktop\MyQt\OpenCV)

1. 在電腦里面配置系統環境變數
C:\Users\XX \Desktop\MyQt\cmake3.18\bin
C:\QT\5.9\mingw53_32\bin;
D:\QT\Tools\mingw530_32\bin
這里要根據你自己的安裝目錄來定義,可以搞完可以重啟一下電腦。
2. OpenCV 運行完自解壓后放到目錄下,可以建立一個build 子目錄opencvBuild,
在opencv安裝的同級目錄下創建檔案夾opencvBuild,用來存放構建檔案及生成的庫。待會編譯好的庫就放在那里。
C:\Users\XX\Desktop\MyQt\OpenCV\opencvBuild
然后到cmake 目錄下,打開cmake-gui 這個程式,設定openCV的源代碼路徑和build路徑。

點擊上圖底部的config, 然后設定編譯器,如下圖

設定編譯器,點擊finish

(https://wiki.qt.io/How_to_setup_Qt_and_openCV_on_Windows 可以參考這個官方檔案來進行)
3. 編譯之前
Check the box [X]WITH_QT
Check the box [X]WITH_OPENGL
set Qt5_DIR to C:\Qt\5.9\mingw53_32\lib\cmake\Qt5 (這個路徑根據你自己的修改)
Uncheck the box []ENABLE_PRECOMPILED_HEADERS
點擊config, 等帶進度條完成

然后點擊“add entry" 按鍵,進行如下的path 或者 value設定。
Set QT_MAKE_EXECUTABLE to C:\Qt\5.9\mingw53_32\bin\qmake.exe
Set Qt5Concurrent_DIR to C:\Qt\5.9\mingw53_32\lib\cmake\Qt5Concurrent
Set Qt5Core_DIR to C:\Qt\5.9\mingw53_32\lib\cmake\Qt5Core
Set Qt5Gui_DIR to C:\Qt\5.9\mingw53_32\lib\cmake\Qt5Gui
Set Qt5Test_DIR to C:\Qt\5.9\mingw53_32\lib\cmake\Qt5Test
Set Qt5Widgets_DIR to C:\Qt\5.9\mingw53_32\lib\cmake\Qt5Widgets
Set Qt5OpenGL_DIR to C:\Qt\5.9\mingw53_32\lib\cmake\Qt5OpenGL
Set CMAKE_BUILD_TYPE to Release or RelWithDebInfo
Set OPENCV_VS_VERSIONINFO_SKIP = 1 (不是path 是value, 在description中設定1)

然后再點擊config, 等進度條完成,再點擊 Generate ,進度條讀完之后,配置完成。
4. 上一步已經配置完成,但是編譯程序中會遇到編譯錯誤,如果希望一次編譯成功,可以進行下面的設定。
不勾選 WITH_IPP
不勾選與TESTS有關的選項
不勾選 ENABLE_PRECOMPILED_HEADERS
不勾選WITH_MSMF
勾選 ENABLE_CXX11
然后再點擊config- generate, 直到提示中沒有紅色的部分,就編譯成功。
5. 這里我進行了上面的配置后,還總是報錯,發現是因為在編譯中不能連接外網,下載不了ffmpeg:
CMake Warning at cmake/OpenCVDownload.cmake:193 (message):
FFMPEG: Download failed: 7;"Couldn't connect to server"
For details please refer to the download log file:
網上找到了一個帖子講解如何讀懂這個報錯資訊: https://www.cnblogs.com/huluwa508/p/10142718.html
如何到CMakeDownloadLog.txt里面去查問題。但是關鍵是為到哪里去找這三個ffmpeg檔案呢?
又查詢了一堆帖子,發現有的只給了2個檔案,差一個,三個檔案必須成套的,而且都要校驗MD5的,搞了一整天沒有搞定。
MD5不匹配。 這里我請為在國外的同學幫了一個忙,把這三個檔案搞齊了,這里我分享出來。作為我在學習QT的程序中
對無數指導為的技術帖子的回報吧。把這三個檔案放到如下的目錄下就好啦~

三個檔案
opencv_videoio_ffmpeg.dll
opencv_videoio_ffmpeg_64.dll
ffmpeg_version.cmake
鏈接:https://pan.baidu.com/s/1CUih5XUOhGMnkC-iUz28gw
提取碼:r7vP
復制這段內容后打開百度網盤手機App,操作更方便哦
反正這三個檔案搞定后,再重新config- generate 編譯都沒有紅色了。
6.
于是去C:\Users\XX\Desktop\MyQt\OpenCV\opencvBuild目錄下
去打開CMD命令視窗 mingw32-make

結果到了39%,總報錯

結果找到了帖子 https://blog.csdn.net/esiangchioa/article/details/107272441 (太感謝了)
解決辦法:將CMake中的 OPENCV/OPENCV_ENABLE_ALLOCATOR_STATS 不打勾
再重新config- generate
去打開CMD命令視窗在opencvBuild目錄下
再重新編譯,mingw32-make,半個小時左右
100%成功!庫檔案已經建立在你的目錄底下了。你可以按照官網的例子跑一個圖片出來測驗,這里我就不重復了。

轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/181382.html
標籤:Qt
下一篇:Spring Boot:application/x-www-form-urlencoded;charset=UTF-8‘ not supported
