1. 程式人生 > >QT+OPENCV+Cmake安裝文件

QT+OPENCV+Cmake安裝文件

Cmake資料夾中存放cmake檔案
Opencv資料夾存放opencv檔案
opencvBinary 存放opencv和opencvContrib編譯後的二進位制檔案
opencvContrib存放opencvContrib檔案
QT存放QT解壓安裝後的檔案
3.檢查檔案的完整性
(1)檢查opencv/source是否是以下的內容,下載的opencv可能會缺少一些檔案
這裡寫圖片描述
(2)檢查opencv/source/3rdparty
這裡寫圖片描述

看一下是否存在libwebp資料夾
4. 設定環境變數

D:\QTINSTALL\QT\Tools\mingw48_32\bin;
D:\QTINSTALL\cmake\bin;
D:\QTINSTALL\QT\5.1.0\mingw48_32\bin;
這三個路徑新增到環境變數中
5. 改變.cmake檔案

D:\QTINSTALL\opencv\sources\cmake檔案下的OpenCVCompilerOptions.cmake開啟,
找到
add_extra_compiler_option(-Werror=non-virtual-dtor)
將其變為
# add_extra_compiler_option(-Werror=non-virtual-dtor)
6. 開啟cmke/bin/cmake-gui,設定原始檔目錄和目標檔案目錄
(1)原始檔目錄必須為包含CmakeLists.txt檔案的opencv目錄
我的原始檔目錄為: D:\QTINSTALL\opencv\sources
這裡寫圖片描述


(2)目標檔案目錄可以自行設定,用於儲存cmake編譯opencv後的二進位制程式碼,我設定的目錄為D:\QTINSTALL\opencvBinary
這裡寫圖片描述

7.點選configure,出現如下介面
這裡寫圖片描述

編譯器選擇Specify native compilers,點選next
C編譯器選擇 D:/QTINSTALL/QT/Tools/mingw48_32/bin/gcc.exe
C++編譯器選擇 D:/QTINSTALL/QT/Tools/mingw48_32/bin/g++.exe
點選next
這裡寫圖片描述

勾選Grouped,在ungrouped Entntries中設定下面幾個檔案目錄
設定為如圖所示的檔案路徑
這裡寫圖片描述


在Ungrouped Entries下找到Qt5Concurrent_DIR,Qt5Core_DIR,Qt5Gui_DIR,Qt5Test_DIR,Qt5Widgets_DIR,Qt5OpenGL_DIR,它們的Value分別填寫為:
d:/opencv/Qt/Qt5.5.0/5.5/mingw482_32/lib/cmake/Qt5Concurrent
d:/opencv/Qt/Qt5.5.0/5.5/mingw482_32/lib/cmake/Qt5Core
d:/opencv/Qt/Qt5.5.0/5.5/mingw482_32/lib/cmake/Qt5Gui
d:/opencv/Qt/Qt5.5.0/5.5/mingw482_32/lib/cmake/Qt5Test
d:/opencv/Qt/Qt5.5.0/5.5/mingw482_32/lib/cmake/Qt5Widgets
d:/opencv/Qt/Qt5.5.0/5.5/mingw482_32/lib/cmake/Qt5OpenGL
點選configure,出現如下介面
這裡寫圖片描述

勾選WITH_QT WITH_OPENGL WITH_PNG
去掉WITH_CUDA

這裡寫圖片描述
這一欄中新增opencv_contrib的檔案位置
如下
這裡寫圖片描述
點選configure,出現如下提示
這裡寫圖片描述
9.出現Configuring done 說明暫時沒有問題,
單擊register按鈕,registering done後
這裡寫圖片描述
關閉cmake軟體

9 在cmake設定的目標資料夾中的空閒位置,例如我的位置是
這裡寫圖片描述
按住shift+右鍵單擊,顯示一個 開啟命令列 ,開啟後
,執行mingw-32命令,如下圖所示
這裡寫圖片描述
這裡寫圖片描述
此時,需要關閉防毒軟體以及其他防衛軟體
此過程大約需要30分鐘左右

10.執行mingw32-make install
大約需要兩三分鐘

11.進一步配置環境變數
將D:\QTINSTALL\opencvBinary資料夾裡面的檔案只留下bin和lib資料夾,其餘檔案都刪除
將D:\QTINSTALL\opencv\build資料夾下的include資料夾拷貝到D:\QTINSTALL\opencvBinary\資料夾下面,得到如下目錄結構
這裡寫圖片描述
再將bin目錄即D:\QTINSTALL\opencvBinary\bin
新增到環境變數中
12.
新建QT檔案,在.pro檔案最後面加下面幾行程式碼進行配置

INCLUDEPATH+=D:\InstallOpencv\opencvBinary\include\opencv\
D:\InstallOpencv\opencvBinary\include\opencv2\
D:\InstallOpencv\opencvBinary\include

LIBS+= D:\InstallOpencv\opencvBinary\lib\libopencv_bgsegm310.dll.a\
D:\InstallOpencv\opencvBinary\lib\libopencv_bioinspired310.dll.a\
D:\InstallOpencv\opencvBinary\lib\libopencv_calib3d310.dll.a\
D:\InstallOpencv\opencvBinary\lib\libopencv_ccalib310.dll.a\
D:\InstallOpencv\opencvBinary\lib\libopencv_core310.dll.a\
D:\InstallOpencv\opencvBinary\lib\libopencv_cvv310.dll.a\
D:\InstallOpencv\opencvBinary\lib\libopencv_datasets310.dll.a\
D:\InstallOpencv\opencvBinary\lib\libopencv_dnn310.dll.a\
D:\InstallOpencv\opencvBinary\lib\libopencv_dpm310.dll.a\
D:\InstallOpencv\opencvBinary\lib\libopencv_face310.dll.a\
D:\InstallOpencv\opencvBinary\lib\libopencv_features2d310.dll.a\
D:\InstallOpencv\opencvBinary\lib\libopencv_flann310.dll.a\
D:\InstallOpencv\opencvBinary\lib\libopencv_fuzzy310.dll.a\
D:\InstallOpencv\opencvBinary\lib\libopencv_highgui310.dll.a\
D:\InstallOpencv\opencvBinary\lib\libopencv_imgcodecs310.dll.a\
D:\InstallOpencv\opencvBinary\lib\libopencv_imgproc310.dll.a\
D:\InstallOpencv\opencvBinary\lib\libopencv_line_descriptor310.dll.a\
D:\InstallOpencv\opencvBinary\lib\libopencv_ml310.dll.a\
D:\InstallOpencv\opencvBinary\lib\libopencv_objdetect310.dll.a\
D:\InstallOpencv\opencvBinary\lib\libopencv_phase_unwrapping310.dll.a\
D:\InstallOpencv\opencvBinary\lib\libopencv_photo310.dll.a\
D:\InstallOpencv\opencvBinary\lib\libopencv_plot310.dll.a\
D:\InstallOpencv\opencvBinary\lib\libopencv_reg310.dll.a\
D:\InstallOpencv\opencvBinary\lib\libopencv_rgbd310.dll.a\
D:\InstallOpencv\opencvBinary\lib\libopencv_saliency310.dll.a\
D:\InstallOpencv\opencvBinary\lib\libopencv_shape310.dll.a\
D:\InstallOpencv\opencvBinary\lib\libopencv_stereo310.dll.a\
D:\InstallOpencv\opencvBinary\lib\libopencv_stitching310.dll.a\
D:\InstallOpencv\opencvBinary\lib\libopencv_structured_light310.dll.a\
D:\InstallOpencv\opencvBinary\lib\libopencv_superres310.dll.a\
D:\InstallOpencv\opencvBinary\lib\libopencv_surface_matching310.dll.a\
D:\InstallOpencv\opencvBinary\lib\libopencv_text310.dll.a\
D:\InstallOpencv\opencvBinary\lib\libopencv_tracking310.dll.a\
D:\InstallOpencv\opencvBinary\lib\libopencv_video310.dll.a\
D:\InstallOpencv\opencvBinary\lib\libopencv_videoio310.dll.a\
D:\InstallOpencv\opencvBinary\lib\libopencv_videostab310.dll.a\
D:\InstallOpencv\opencvBinary\lib\libopencv_xfeatures2d310.dll.a\
D:\InstallOpencv\opencvBinary\lib\libopencv_xobjdetect310.dll.a\
D:\InstallOpencv\opencvBinary\lib\libopencv_xphoto310.dll.a
13.完成全部安裝

在安裝過程中會出現的問題
1.
CMAKE_MAKE_PROGRAM is not set. You probably need to select a different build tool.
這裡寫圖片描述
原因:
沒有c和C++的編譯工具。
(1)這是由於QT Creator中沒有MinGW編譯器,需要下載MinGW編譯器,再按照步驟http://wenku.baidu.com/view/602cad4cb7360b4c2f3f6429.html
將MinGW編譯器整合到QT Creator中
(2)或者沒有將bin資料夾加入到環境變數中
按照上面安裝步驟所寫的第四步進行即可
2.
這裡寫圖片描述
檢視D:/QTINSTALL/opencvBinary/CMakeFiles/CMakeOutput.log
“E:/C++” “MATCHES” “^E:/C++/Opencv 3.0/opencv/sources” “OR” “E:/C++” “MATCHES” “^E:/C++”

Regular expression “^E:/C++/Opencv 3.0/opencv/sources” cannot compile
Call Stack (most recent call first):
CMakeLists.txt:354 (ocv_include_directories)
這個解釋是說cmake的安裝包裡面有空格或者有加號
尋求網上的原因:
http://www.cnblogs.com/sn-dnv-aps/p/4561939.html
做出如下變化
修改 opencv/sources/CMakeLists.txt
行數: 174
OCV_OPTION(WITH_IPP …..) 將ON 修改為OFF
行數: 179
OCV_OPTION(WITH_OPENEL ….) 將OFF 修改為ON
行數: 185
OCV_OPTION(WITH_QT ….) 將 OFF 修改為 ON
3. 下載opencv_ffmpeg.dll出現問題
這裡寫圖片描述
這是由於國內的網路問題使得opencv_ffmped.dll不能下載完成
解決辦法:
下載Opencv_ffmpeg.dll
http://download.csdn.net/download/kelvin_yan/9710789
下載檔案,替換到opencv/3rdparty/ffmepg資料夾下面
4.下載protobuf-cpp-3.1.0.tar.gz出現問題
這裡寫圖片描述
解決方案
下載protobuf-cpp-3.1.0
http://download.csdn.net/download/lql0716/9738154
將檔案放在D:\QTINSTALL\opencvContrib\modules\dnn.download\bd5e3eed635a8d32e2b99658633815ef\v3.1.0
注意:在出現錯誤提示後,不能清除cmake的快取,或者關閉cmake,只能點選cmake介面的stop按鈕,將
這裡寫圖片描述

檔案直接替換,注意:不能解壓!
5. 出現 ocv_add_testdata
這裡寫圖片描述
解決方案
開啟D:\QTINSTALL\opencvContrib\modules\text資料夾下的檔案CMakeLists.txt,將最後三行進行註釋,註釋為如下形式
這裡寫圖片描述
6.提示:下載vgg_generated_*.i出現問題
這裡寫圖片描述
原因:網路問題
解決方案
http://answers.opencv.org/question/113942/cmake-failing-with-hash-mismatch/上所提到的連結上下載所需的檔案,
將檔案將檔案vgg_generated_*.i替換到D:\QTINSTALL\opencvContrib\modules\xfeatures2d\cmake.download\151805e03568c9f490a5e3a872777b75
資料夾下的檔案
8. 這種use –Wno-dev warning可以忽略
這裡寫圖片描述
9.在cmd中執行mingw32-make出現問題的時候,需要檢視提示,根據提示刪除不需要的opencv-contrib資料夾
https://github.com/opencv/opencv_contrib/tree/master/modules
可以看到每個模組的具體功能
當我的包中有aruco模組 和ximgproc模組時,會提示錯誤。此時,需要將opencv-contrib/modules/檔案中發生錯誤的模組刪除,用cmake重新編譯,再在cmd中執行mingw32-make