qt调用opencv汇总(2)
OpenCV3.4.3+Qt5.9.4(QtCreator)開發(fā)環(huán)境搭建
之前有過對OpenCV3.4.2+VS2015編譯及環(huán)境搭建,今天使用OpenCV3.4.3+QtCreator5.9.4編譯及環(huán)境搭建。編譯過程比較曲折,大部分編譯錯誤都可以查得到解決方法,也遇到了Google無果的錯誤,好在最后還是解決了,特此記錄。
編譯環(huán)境
?
- win10-64bit
- Qt5.9.4
- MinGW-5.3.0-32bit
- CMake-3.12.1
- OpenCV-3.4.3
相關(guān)軟件下載地址
Qt下載地址:http://download.qt.io/archive/qt/5.9/
CMake下載地址:https://cmake.org/download/
OpenCV下載地址:https://opencv.org/releases.html#
此處下載安裝包(Win pack)和源碼(Sources)均可,配置時選擇的目錄不同。
其它地址
OpenCV官網(wǎng):https://opencv.org/
OpenCV官方教程:https://docs.opencv.org/3.4/d9/df8/tutorial_root.html
速查表:https://docs.opencv.org/3.0-last-rst/opencv_cheatsheet.pdf
添加環(huán)境變量
?
- H:\cmake\bin
- D:\Qt\Qt5.9.4\5.9.4\mingw53_32\bin
- D:\Qt\Qt5.9.4\Tools\mingw530_32\bin
OpenCV編譯步驟
在opencv安裝的同級目錄下創(chuàng)建文件夾buildOpencv,用來存放構(gòu)建文件及生成的庫。
Qt官方編譯步驟文檔:https://wiki.qt.io/How_to_setup_Qt_and_openCV_on_Windows
編譯前配置
1、打開?cmake-gui,設(shè)置源碼和生成路徑:
- Where is the source code :H:\opencv3.4.3\opencv\sources?(opencv安裝目錄)
- Where to build the binaries:H:\opencv3.4.3\buildOpencv?(新建的文件目錄)
然后點擊Configure,在彈框里選擇編譯器,點擊Next,如下圖:
如果下載的是opencv源碼而非安裝包,解壓后里面沒有sources目錄,上圖第一項設(shè)置Where is the source code :H:\opencv3\opencv-3.4.3即可。
2、在彈窗里設(shè)置編譯器目錄,然后點擊Finish:
D:\Qt\Qt5.9.4\Tools\mingw530_32\bin\gcc.exe
D:\Qt\Qt5.9.4\Tools\mingw530_32\bin\g++.exe
3、點擊Finish之后需要等待一段時間,等到進度條讀完之后,開始配置:
勾選?WITH_QT
勾選?WITH_OPENGL(默認已勾選)
勾選之后點擊Configure,等到進度條讀完之后,再次配置:
- Qt5Concurrent_DIR -->?D:\Qt\Qt5.9.4\5.9.4\mingw53_32\lib\cmake\Qt5Concurrent
- Qt5Core_DIR ??????????-->?D:\Qt\Qt5.9.4\5.9.4\mingw53_32\lib\cmake\Qt5Core
- Qt5Gui_DIR?????????????-->?D:\Qt\Qt5.9.4\5.9.4\mingw53_32\lib\cmake\Qt5Gui
- Qt5Test_DIR ???????????-->?D:\Qt\Qt5.9.4\5.9.4\mingw53_32\lib\cmake\Qt5Test
- Qt5Widgets_DIR??????-->?D:\Qt\Qt5.9.4\5.9.4\mingw53_32\lib\cmake\Qt5Widgets
- Qt5OpenGL_DIR?????-->?D:\Qt\Qt5.9.4\5.9.4\mingw53_32\lib\cmake\Qt5OpenGL
CMAKE_BUILD_TYPE --> ***Release***(設(shè)置為Release后編譯完成只會生成release庫,需要debug庫的話等到編譯完成將此處更改為Debug,重新執(zhí)行下面的步驟則會在生成的release庫的目錄下生成debug庫)
點擊右上角的Add Entry,然后在彈窗中輸入:
- QT_MAKE_EXECUTABLE
- FILEPATH
- D:\Qt\Qt5.9.4\5.9.4\mingw53_32\bin\qmake.exe
然后點擊OK- Generate ,進度條讀完之后,配置完成。
更多配置提示
上一步已經(jīng)配置完成,但是編譯過程中會遇到編譯錯誤,如果希望一次編譯成功,可以進行下面的設(shè)置。或者直接在上一步Generate之后就進行編譯,等到編譯出現(xiàn)錯誤時再來配置。
- 不勾選 WITH_IPP
- 不勾選與TESTS有關(guān)的選項
- 不勾選 ENABLE_PRECOMPILED_HEADERS
- 不勾選WITH_MSMF
- 勾選 ENABLE_CXX11
- 編輯H:\opencv3.4.3\opencv\sources\modules\videoio\src\cap_dshow.cpp文件,在約110行左右#include "DShow.h"上面添加#define NO_DSHOW_STRSAFE,#define STRSAFE_NO_DEPRECATE,如下圖:
?
編譯命令
在構(gòu)建目錄buildOpencv下按shift+右鍵,打開終端,然后執(zhí)行編譯命令:
注意:右側(cè)帶參數(shù)的命令是多線程編譯,編譯速度會快很多,但是使用多線程編譯前最好先重啟電腦或者關(guān)閉不必要的軟件保證內(nèi)存和CPU的占用較低狀態(tài),否則很有可能編譯失敗,編譯失敗的話也沒關(guān)系可以改為單線程繼續(xù)編譯。
mingw32-make install編譯完成(100%)之后執(zhí)行安裝命令,會在相關(guān)目錄下生成庫文件。
編譯錯誤
編譯過程中可能會遇到下面的錯誤:
?
解決:改為使用mingw32-make命令繼續(xù)編譯
?
解決:打開 cmake-gui ,勾選 ENABLE_CXX11,然后重新Configure-Generate-mingw32-make
解決:
編輯H:\opencv3.4.3\opencv\sources\modules\videoio\src\cap_dshow.cpp文件,在約110行左右#include "DShow.h"上面添加#define NO_DSHOW_STRSAFE,然后重新Configure-Generate-mingw32-make。編譯debug版本出現(xiàn)該錯誤時在cap_dshow.cpp文件中添加#define STRSAFE_NO_DEPRECATE
解決:打開 cmake-gui ,不勾選WITH_MSMF,然后重新Configure-Generate-mingw32-make
生成的OpenCV庫
編譯完成后,生成的庫在H:\opencv3.4.3\buildOpencv\install\x86\mingw\bin目錄下
Qt+OpenCV測試
添加OpenCV庫到環(huán)境變量
添加?H:\opencv3.4.3\buildOpencv\install\x86\mingw\bin到系統(tǒng)環(huán)境變量(Path)中
測試代碼
在.pro文件中添加頭文件路徑和庫路徑:
INCLUDEPATH += H:\opencv3.4.3\buildOpencv\install\include
LIBS += H:\opencv3.4.3\buildOpencv\install\x86\mingw\bin\libopencv_core343.dll \
? ? H:\opencv3.4.3\buildOpencv\install\x86\mingw\bin\libopencv_highgui343.dll \
? ? H:\opencv3.4.3\buildOpencv\install\x86\mingw\bin\libopencv_imgcodecs343.dll \
? ? H:\opencv3.4.3\buildOpencv\install\x86\mingw\bin\libopencv_imgproc343.dll \
? ? H:\opencv3.4.3\buildOpencv\install\x86\mingw\bin\libopencv_features2d343.dll \
? ? H:\opencv3.4.3\buildOpencv\install\x86\mingw\bin\libopencv_calib3d343.dll
mainwindow.cpp:
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
MainWindow::MainWindow(QWidget *parent) :
? ? QMainWindow(parent),
? ? ui(new Ui::MainWindow)
{
? ? ui->setupUi(this);
? ? // read an image,Mat是基礎(chǔ)圖像容器
? ? cv::Mat image = cv::imread("H:/test_rec/qt.jpg", 1);
? ? // create image window named "My Image"
? ? cv::namedWindow("My Image");
? ? // show the image on window
? ? cv::imshow("My Image", image);
}
MainWindow::~MainWindow()
{
? ? delete ui;
}
注意:如果構(gòu)建項目時使用影子構(gòu)建(即構(gòu)建目錄與項目目錄非同一目錄),則需要將.pro里引入的庫拷貝到可執(zhí)行文件所在目錄,否則運行程序會異常結(jié)束(因為找不到庫),如果沒有使用影子構(gòu)建則可以直接運行。
?
?
運行結(jié)果
?
?
Qt + OpenCV + Qt Creator環(huán)境配置
軟件版本:
系統(tǒng):win7 64位
opencv:2.4.9
QT:5.10.1
QT creator:4.5.1
MinGW:5.3.0
CMake:3.11.1
?
第一步:安裝QT
首先,在QT官網(wǎng)下載QT,5版本的QT安裝包包含了MinGW、Qt Creator,直接下載安裝就行。需要注意的是在安裝過程中,QT有多個組件可選,例如MSVC版、安卓、ARM等,因為我只需做PC端的機器視覺開發(fā),同時考慮到和Linux上的兼容性,只選擇MinGW,Tools的話只選擇了Qt Creator,具體如下圖:
? ? ?
安裝完成后將qt和mingw文件夾下bin文件夾路徑添加進PATH變量。
第二步:安裝CMake
安裝很簡單,不多說。注意勾選添加進path變量
第三步:安裝opencv
第四步:利用MinGW GUI編譯opencv源碼,注意選WITH_QT,WITH_OPENGL,配置后對紅色部分做修改:??????? ?
?
????找到QT_QMAKE_EXECUTABLE,它的值填寫為:C:/Qt/Qt5.3.1/5.3/mingw482_32/bin/qmake.exe
????找到QT_MKSPECS_DIR,它的值填寫為:C:/Qt/Qt5.3.1/5.3/mingw482_32/mkspecs
????找到QT_QTCORE_LIBRARY_DEBUG,它的值填寫為:C:/Qt/Qt5.3.1/5.3/mingw482_32/bin/Qt5Cored.dll
????找到QT_QTCORE_LIBRARY_RELEASE,它的值填寫為C:/Qt/Qt5.3.1/5.3/mingw482_32/bin/Qt5Core.dll
????找到QT_QTCORE_INCLUDE_DIR,它的值填寫為C:/Qt/Qt5.3.1/5.3/mingw482_32/include/QtCore/5.3.1/QtCore
?第五步:打開CMD,執(zhí)行mingw32-make,然后執(zhí)行mingw32-make install
最后:配置pro文件:
?
INCLUDEPATH += D:\opencv_mingw530\install\include LIBS += -L D:\opencv_mingw530\install\x86\mingw\bin\libopencv_*.dll //(動態(tài)鏈接庫) LIBS += -L D:\opencv_mingw\install\x86\mingw\lib\libopencv_*.a ????//(靜態(tài)鏈接庫)
實例代碼:
QT5.8+OpenCV3.2的安裝與配置
QT5.8+OpenCV3.2的安裝與配置(win7_X64+Qt_5.8.0+opencv_3.2.0)
一、安裝QT 5.8.0
安裝在: C:\Qt\Qt5.8.0
QT下載地址:?http://download.qt-project.org/official_releases/
下載:qt-opensource-windows-x86-mingw530-5.8.0.exe
二、安裝opencv
OpenCV官網(wǎng):?http://opencv.org/
下載OpenCV 3.2.0
解壓至: E:\opencv3.2\opencv\
三、安裝cmake
從CMake下載cmake-3.8.0-win64-x64.msi
安裝至: C:\Program Files\CMake
CMake下載地址:?http://www.cmake.org/cmake/resources/software.html
安裝CMake的的時候,注意安裝路徑不能有中文和空格, 在安裝過程中,勾選為所有用戶加入到環(huán)境變量()
四、配置環(huán)境變量
主要是將C:\Qt\Qt5.8.0\Tools\mingw530_32\bin 添加到系統(tǒng)環(huán)境變量中。
1.生成Makefiles
打開CMake,配置源碼路徑和生成物的目標路徑:
源碼路徑: E:\opencv3.2\opencv\sources
目標路徑: F:\opencv3.2
點擊Configure,在彈出的框中選擇MinGW Makefiles ,并勾選 Specify native compilers.
接著配置C和C++編譯器路徑:
C: C:\Qt\Qt5.8.0\Tools\mingw530_32\bin\gcc.exe
C++: C:\Qt\Qt5.8.0\Tools\mingw530_32\bin\g++.exe?
點擊finish。這里CMake會自動開始配置。
報錯?
將value值分別修改為:
C:/Qt/Qt5.8.0/5.8/mingw530_32/bin/qmake.exe
C:/Qt/Qt5.8.0/5.8/mingw530_32/lib/cmake/Qt5Concurrent
C:/Qt/Qt5.8.0/5.8/mingw530_32/lib/cmake/Qt5Core
C:/Qt/Qt5.8.0/5.8/mingw530_32/lib/cmake/Qt5Gui
C:/Qt/Qt5.8.0/5.8/mingw530_32/lib/cmake/Qt5Test
C:/Qt/Qt5.8.0/5.8/mingw530_32/lib/cmake/Qt5Widgets
然后勾選WITH_OPENGL和WITH_QT
再次報錯,將value值繼續(xù)修改為
C:/Qt/Qt5.8.0/5.8/mingw530_32/lib/cmake/Qt5OpenGL
繼續(xù)點擊Configure,會有成功的提示。
點擊Generate,生成MakeFiles成功。?
2.編譯OpenCV
到 E:\opencv3.2\opencv\sources\cmake 下找到 OpenCVCompilerOptions.cmake
它并找到
add_extra_compiler_option(-Werror=non-virtual-dtor)
將它注釋掉,變成:
- ?
(以上這一步是為了規(guī)避掉我在編譯過程中遇到的問題)
返回到:F:\opencv3.2在這個路徑下按住鍵盤的shift鍵,然后右鍵鼠標,打開cmd窗口,在命令行輸入 mingw32-make
這個過程比較久,大概30分鐘,因電腦而異。編譯完成。
然后輸入 mingw32-make install 進行安裝:
大約一分鐘后,安裝完成。
3.配置環(huán)境
A.找到路徑 : E:\opencv3.2\opencv\build\include
將include文件夾復(fù)制到一個自定義文件夾中
B.CMake目標路徑 下的bin文件夾
復(fù)制到上面的文件夾
C.CMake目標路徑 下的lib文件夾
同上復(fù)制
最后自定義文件夾中應(yīng)該如下示:
然后將文件夾下的bin路徑添加到系統(tǒng)環(huán)境變量中。
到此QT Creator下的OpenCV開發(fā)環(huán)境已經(jīng)配置好,剩下的就是測試是否配置成功。
五、測試
新建一個空的工程 OpenCV_Test.pro
在里面添加:
在mainwindow.h里添加:
#include <opencv2/opencv.hpp> using namespace cv; //定義全局變量 cv::Mat image;- ?
在mainwindow.cpp中添加button響應(yīng)函數(shù)如下
void MainWindow::on_openImgPushButton_clicked() {QString fileName = QFileDialog::getOpenFileName(this,tr("Open Image"),".",tr("Image Files (*.png *.jpg *.bmp)"));qDebug()<<"filenames:"<<fileName;//文件名不能有中文字//String str=fileName.toStdString();image = cv::imread(fileName.toStdString(),1);displayMat(image);//QLabel+QScrollarea顯示Mat圖像的函數(shù),下一篇博文涉及 }實現(xiàn)的效果為:
直接在QT creator中使用opencv
工具:
CMake:3.8.2
OpenCV:3.0.0(測試了下3.1.0與3.2.0也可以)
QT:5.8.0
MinGW:5.3.0
系統(tǒng): WIndows 10
開始
1. OpenCV
下載完解壓到某一文件夾:
2.CMake.
選擇source文件以及輸出的文件路徑。這里的source文件就是下載opencv解壓后的文件路徑,而第二個build路徑可以自己選擇放在哪個文件夾里。
點擊config,選擇MinGW Makefiles,再點擊Specify native compilers。
選擇編譯器的路徑,保持跟QT的編譯器一致就行了。
我的路徑為:
E:\installation\QT\Tools\mingw530_32\bin\gcc.exe
E:\installation\QT\Tools\mingw530_32\bin\g++.exe
CMake就會執(zhí)行配置:
遇到問題請看后面所列情況。
解決后會看到Configuring done。
勾選WITH_OPENGL和WITH_QT,繼續(xù)config。
還有紅色框框,確定路徑?jīng)]錯,繼續(xù)config。
已經(jīng)沒有紅色框框了,說明config完成,然后我們點擊Generate。
我們可以看到CMake生成的文件:
打開命令行,cd到改目錄下,輸入mingw32-make進行編譯
編譯過程如下,這里所用的時間會比較長,耐心等待:
100%之后再輸入mingw32-make install。
生成的文件都在install文件夾中:
3.QT Creator
我們把對應(yīng)的路徑(包含文件INCLUDE和庫目錄LIB)添加到QT工程的pro文件里就可以使用opencv了。
INCLUDEPATH += G:\opencvTest\opencvTest300\install\include\
INCLUDEPATH += G:\opencvTest\opencvTest300\install\include\opencv\
INCLUDEPATH += G:\opencvTest\opencvTest300\install\include\opencv2\
LIBS += G:\opencvTest\opencvTest300\install\x86\mingw\lib\libopencv_*.a
成功運行opencv測試代碼。
**
可能遇到的一些問題:
**
- 由于找不到libwinpthread-1.dll,無法繼續(xù)執(zhí)行代碼。重新安裝程序可能會解決此問題。
這個是因為環(huán)境變量沒配,在系統(tǒng)環(huán)境變量的PATH中加上QT中mingw對應(yīng)的目錄就行了。 比如我的路徑是(忘了是不是只加第一個就可以,不過只加第二個會出錯):E:\installation\QT\5.8\mingw53_32\bin
E:\installation\QT\Tools\mingw530_32\bin
-
CMake Error at 3rdparty/ippicv/downloader.cmake:71 (file): file DOWNLOAD HASH mismatch
我們手動下載對應(yīng)文件替換掉目錄下的文件。
比如我的ippicv_windows_20141027.zip出問題,則在網(wǎng)上下載一個新的壓縮包替換掉原來的壓縮包(我電腦上的路徑G:\opencvTest\opencv-3.0.0\3rdparty\ippicv\downloads\windows-b59f865d1ba16e8c84124e19d78eec57\ippicv_windows_20141027.zip)。原本3M+網(wǎng)上找了一個25M的替換掉就可以了。 -
CMake was unable to find a build program corresponding toXXX
在CMAKE_MAKE_PEOGRAM中寫上mingw32-make.exe的路徑,我的路徑是E:/installation/QT/Tools/mingw530_32/bin/mingw32-make.exe。 -
出現(xiàn)問題
modules\python2\CMakeFiles\opencv_python2.dir\build.make:171: recipe
for target
‘modules/python2/CMakeFiles/opencv_python2.dir/__/src2/cv2.cpp.obj’
failed mingw32-make[2]:?*
[modules/python2/CMakeFiles/opencv_python2.dir/__/src2/cv2.cpp.obj]
Error 1 CMakeFiles\Makefile2:7721: recipe for target
‘modules/python2/CMakeFiles/opencv_python2.dir/all’ failed
mingw32-make[1]:?*
[modules/python2/CMakeFiles/opencv_python2.dir/all] Error 2
Makefile:150: recipe for target ‘a(chǎn)ll’ failed mingw32-make:?*?[all]
Error 2
解決方法:把CMake中的python選項去掉,有關(guān)路徑也刪掉。重新config和generate.
-
找不到photo文件
在CMake中勾選BUILD_opencv_photo重新config、generate、mingw32-make、mingw32-make install。 -
Qt 程序異常結(jié)束,并且crashed
這個問題原因很多。
這里的原因是沒有在環(huán)境變量中添加編譯完的opencv目錄下mingw的bin目錄。
( 我的路徑:G:\opencvTest\opencvTest300\install\x86\mingw\bin)
?
?
原因:the windres.exe mingw uses cannot handle/escape “l(fā)ong long” given as a cmdline arg
解決方法:在cmake里面找到OPENCV_ENABLE_ALLOCATOR_STATS或者在search里面搜索,然后把后面的勾選去掉,接著Configure和Generate后,接著在cmd窗口中mingw32-make即可繼續(xù)編譯。
?
-
使用cmake來自己編譯opencv
-
一、先下載cmake:
1. 登錄CMake官網(wǎng),下載CMake安裝包。
?
? 2. 雙擊下載的安裝包,安裝程序,會彈出如下界面,點擊“Next”按鈕,進入下一步?
? 3. 同意CMake的條款,點擊“Next”按鈕,進入到下一步?
? 4. 選中“Add CMake to the system PATH for the current user”,點擊“Next”按鈕。?
? 5. 修改安裝目錄。?
?
?
? 6. 點擊“Install”,CMake開始安裝,安裝完成后,點擊“Finish”按鈕。?
?
?
?
?
END?
?
二、使用CMake生成VS2013的OpenCV解決方案?
?
?
?
?
1. 直接在opencv的官網(wǎng)上下載opencv3.0,然后安裝會生成一個opencv3.0的文件。
2.在OpenCV3.0目錄下新建目錄build,用于放置生成的解決方案和編譯好的庫。
?
?
?
?
? 3. 打開CMake,在Where is the source code后面的文本框選擇OpenCV的源代碼,Where to build the binaries選擇第2步新建的文件夾build,如下圖所示:
?
? 4. 點擊“Configure”按鈕,在彈出的對話框中,選擇“Visual Studio 12 Win64”,使用默認的本地編譯器,如下圖所示:(根據(jù)自己電腦里面的vs來選)
?
?
?
5. 點擊“Finish”之后,等待配置完成,如下圖所示:(如果電腦里面沒有下載Cuda,則將勾選的Cuda選項設(shè)成否)
?
?
?
? 6. 找到WITH_TBB,勾選:(該選項我這次編譯時沒有選擇,不過也沒有報錯)
?
?
?
7.再次點擊“Configure”按鈕,配置完成出現(xiàn)紅色標記,修改TBB_INCLUDE_DIRS的Value為:C:\OpenCVLatest\tbb42_20140122oss_win\tbb42_20140122oss\include
?
?
?
?
?
?8. 再次點擊“Configure”按鈕,會出現(xiàn)如下所示:
?
?
?
? 9. 這個地方需要注意一下,因為生成的Value值到intel64,這里需要修改為intel64/vc12,對應(yīng)vs2013,如下圖所示:
?
?
?
?
?
?
?
?
?
10. 再次點擊“Configure”按鈕,這時就沒有紅色標記出現(xiàn)了,點擊“Generate”按鈕,生成OpenCV的解決方案。
?
?
?
?
END
?
三、VS2013編譯OpenCV解決方案生成庫1.打開OpenCV的解決方案(在文件夾下面選擇OpenCV.sln文件),右擊CMakeTargets下的INSTALL,選擇“生成”,生成Debug版的dll和lib,如下圖所示:
?
?
?
?
? 2. 修改配置為“Release”,重復(fù)步驟1,生成Release版的dll和lib,如下圖所示:
?
?
?
3. 生成完畢,在OpenCV解決方案下的install文件夾里就有了dll,lib和h頭文件了。
?
?
?
? 4. 雖然生成了庫文件了,如果可以Debug跟蹤源碼,還得保留OpenCV解決方案。
?
?
?
?
?
?
?
在配置vs2013時,本人有遇到一點錯誤:
錯誤?1?error C1083:?無法打開包括文件: “unistd.h”: No such file or directory:
錯誤原因:沒有繼承vs2013中默認的庫,可以在屬性管理器->鏈接器->輸入->附加依賴項,中勾選從父級或項目默認設(shè)置繼承?
?
?
錯誤2?? 找不到Python27-d.lib,
錯誤原因:Python中有一個頭文件調(diào)用了Python調(diào)用庫的Debug模式;
http://blog.csdn.net/I_can_do_1098/article/details/54312117?可以參照這個博客,將Pythonconfig.h進行修改;?
最后,自己手動跟蹤opencv的代碼:
1.先新建一個項目,再將opencv里面的一個源代碼打開?
?
?
,其中里面的配置環(huán)境為:
?
再進行生成 ,調(diào)試成功即可。
end -
Win10下Qt+OpenCV+Cmake編譯錯誤記錄與解決【gcc: error: long: No such file or directory】
-
環(huán)境:Window10
[ 39%] Building CXX object modules/core/CMakeFiles/opencv_core.dir/mean.avx2.cpp.obj [ 39%] Building CXX object modules/core/CMakeFiles/opencv_core.dir/merge.avx2.cpp.obj [ 40%] Building CXX object modules/core/CMakeFiles/opencv_core.dir/split.avx2.cpp.obj [ 40%] Building CXX object modules/core/CMakeFiles/opencv_core.dir/sum.avx2.cpp.obj [ 40%] Building RC object modules/core/CMakeFiles/opencv_core.dir/vs_version.rc.obj gcc: error: long: No such file or directory C:\PROGRA~1\MINGW-~1\X86_64~1.0-P\mingw64\bin\windres.exe: preprocessing failed. mingw32-make[2]: *** [modules\core\CMakeFiles\opencv_core.dir\build.make:1492: modules/core/CMakeFiles/opencv_core.dir/vs_version.rc.obj] Error 1 mingw32-make[2]: *** Waiting for unfinished jobs.... mingw32-make[1]: *** [CMakeFiles\Makefile2:1844: modules/core/CMakeFiles/opencv_core.dir/all] Error 2 mingw32-make: *** [Makefile:179: all] Error 2
Qt版本:5.9.5
OpenCV版本:4.3.0
安裝完Opencv、Qt和Cmake之后在cmd下通過mingw32-make編譯,結(jié)果出現(xiàn)錯誤,錯誤提示如下: - ?
Qt Creator5.12配置OpenCV4.3.0和opencv_contrib擴展包(親測有效)
本文結(jié)構(gòu)
-
- 第一部分 只安裝Qt Creator和配置OpenCV
-
- 1.Qt Creator5.12.2下載與安裝
- ?
- 2.Cmake下載與安裝
- 3.OpenCV下載
- 4.編譯OpenCV
- 5.測試Qt程序
- 第二部分 配置opencv_contrib擴展庫
-
- 6.添加opencv_contrib擴展庫
- 7.測試使用opencv擴展庫的Qt程序
- 8.本文使用的軟件百度網(wǎng)盤下載
?
最終結(jié)果展示
筆者使用的版本如下
友情提示:這里Opencv 和opencv_contrib版本需要一致,筆者踩過坑。
第一部分 只安裝Qt Creator和配置OpenCV
1.Qt Creator5.12.2下載與安裝
以win10家庭版為例進行下載和安裝
官方下載地址http://download.qt.io/archive/qt/5.12/5.12.2/下面有百度網(wǎng)盤安裝包,請往下看
選擇window版本
安裝包有點大3.7G,下載很慢,最終報錯,跳轉(zhuǎn)到迅雷下載成功
這里給出筆者百度網(wǎng)盤安裝包window版本Qt 5.12.2
雙擊安裝包
這里需要注冊qt賬戶
注冊成功后登錄
自定義安裝路徑,要求路徑不能含有空格
選擇組件
同意協(xié)議許可
點擊下一步
下一步進行安裝
安裝完成顯示如下
默認是打開Qt界面
2.Cmake下載與安裝
官網(wǎng)下載地址https://cmake.org/download/,目前最新的版本是Cmake3.18.0
安裝
筆者選擇了如下配置:配置全局變量和創(chuàng)建桌面快捷方式
更改安裝路徑
安裝完成
3.OpenCV下載
官方下載地址:https://opencv.org/releases/
目前最新版本是4.3.0
這里選擇windows
下載完壓縮包名:opencv-4.3.0-vc14_vc15.exe
解壓完文件名:opencv
下面是將mingw加入環(huán)境變量
系統(tǒng)變量下找到PATH,點擊編輯,添加如下
D:\Qt5.12.2\Tools\mingw730_64\bin- 1
這是下載Qt時候的路徑,需要自己找到
根據(jù)知乎:PATH和path是一樣的,原因是:Windows系統(tǒng)對大小寫不敏感。
4.編譯OpenCV
根據(jù)安裝路徑,找到Cmake,點擊cmake.gui.exe
where is the source code
添加opencv的sources
- 1
新建文件夾opencv-build
where to build the binaries
D:/opencv/opencv-build- 1
保持默認MinGW Makefiles,點擊Specify native compilers,再next
編譯器選擇:這里自己的安裝路徑
C語言
- 1
C++
D:/Qt5.12.2/Tools/mingw730_64/bin/g++.exe- 1
Fortran不用填
需要下拉,選中下面這兩個WITH_OPENGL和WITH_QT
出現(xiàn)錯誤
錯誤信息
解決辦法
在Opencv文件夾sources底下,也就是上面配置source code 的地址:D:/opencv/sources
在CMakeLists.txt文件下添加,位置如圖所示
- 1
這里是cmake配置opencv時候的編譯器選項位置
完成之后來到下面的界面
然后再次點擊configure,然后顯示configuring done
此時,可以選擇關(guān)閉Cmake,打開
where to build the binaries
- 1
可以看到如下生成的文件
鼠標放在該文件夾內(nèi),按住Shift鍵右擊鼠標,選擇在此處打開Powershell窗口
在Powershell中輸入
- 1
據(jù)參考博客的博主所言:這里的-j 8是為了讓CPU進行多任務(wù)處理,可以加快編譯速度
進行到40%發(fā)生錯誤(這是沒有添加opencv-contrib擴展庫時候的報錯)
解決辦法
在stackoverflow上面看到同樣的問題https://stackoverflow.com/questions/61707195/error-building-opencv-with-mingw-qt-windows
打開我們新建的opencv-build文件下該路徑
D:\opencv\opencv-build\modules\core\CMakeFiles\opencv_core.dir- 1
打開flags.make,然后把RC-DEFINES(下面劃線部分)替換掉
替換代碼(注:cmake每configure和generate之后都需要更改這個文件)
最終編譯完成
100%之后輸入
mingw32-make install完成之后退出
現(xiàn)在需要將以下路徑添加環(huán)境變量
D:\opencv\opencv-build\install\x64\mingw\bin5.測試Qt程序
新建project
選擇默認的項目Application-Qt Widgets Application
項目命名和位置:注意這里不能有中文路徑,下面是錯誤的示范,后面筆者又新建項目,重新改成英文的路徑,否則會報錯
默認下一步
繼續(xù)下一步
點擊完成
在test.pro文件該位置添加如下代碼
注意不要寫成這種形式:
//這是錯誤的代碼 INCLUDEPATH += D:\opencv\opencv-build\install\include LIBS += D:\opencv\opencv-build\lib\正確的代碼
INCLUDEPATH += D:\opencv\opencv-build\install\include LIBS += D:\opencv\opencv-build\lib\libopencv_*.a
在mainwindow.cpp文件下添加相應(yīng)的包,添加代碼如下
點擊左下角的錘子,進行構(gòu)建
會顯示正確的信息如下
點擊綠色的箭頭運行
測試結(jié)果
顯示出圖片
至此,Qt5配置OpenCV安裝配置完成!
第二部分 配置opencv_contrib擴展庫
該部分在第一部分的基礎(chǔ)上,配置opencv_contrib,本文結(jié)構(gòu)這樣安排的目的在于:第一,筆者先是安裝了qt和opencv,當時沒想到要使用opencv_contrib擴展庫,也就是說這是筆者真實的安裝過程;第二,基于對讀者的換位思考。經(jīng)過上面第一部分的配置工作,讀者可能初步產(chǎn)生配置成功的喜悅,以更好的狀態(tài)進入到擴展庫的部分。
6.添加opencv_contrib擴展庫
1.下載opencv擴展庫,下載地址opencv_contrib全部版本下載地址
選擇版本4.3.0
解壓完:
2.編譯的事前準備
打開路徑:在D:\opencv\sources\cmake下面找到OpenCVCompilerOptions.cmake文件,打開它并找到add_extra_compiler_option(-Werror=non-virtual-dtor),
將其注釋掉,如:
#add_extra_compiler_option(-Werror=non-virtual-dtor)
(這一步,筆者不知道是干嘛所用)
這一步參考該篇博文:qt5(mingw版) opencv3.0(含contrib擴展)配置詳解
由于是后面補充的contrib擴展庫,打開Cmake,在第一部分配置成功后選中下面這個NONFREE
再搜索path,找到OPENCV-EXTRA-MODULES_PATH,配置value,找到解壓后的擴展庫,路徑到modules文件,這里配置value
下面便可以點擊generate,顯示generating done
每次generate之后都要經(jīng)過第4步修改flags.make 文件,請參考第4步
(如果電腦沒有安裝cuda,請去掉勾選BUILD_CUDA_STUBS,否則會找不到cuda從而報錯)
然后generate(下面這是錯誤的圖,因為未去掉BUILD_CUDA_STUBS)
然后開始重復(fù)上面沒有配置opencv_contrib的步驟4:編譯OpenCV
在Powershell中輸入
在26%遇到問題
這個問題的解決需要去掉勾選BUILD_CUDA_STUBS
后面遇到錯誤
解決辦法:如果出現(xiàn)dynafu.cpp的錯誤,BUILD_opencv_rgbd與WITH_OPENGL只能勾選其一
去掉勾選BUILD_opencv_rgbd
還發(fā)現(xiàn)這樣的錯誤
[ 56%] [ 56%] Scanning dependencies of target opencv_aruco Building CXX object modules/xfeatures2d/CMakeFiles/opencv_xfeatures2d.dir/src/boostdesc.cpp.objBuilding CXX object modules/xfeatures2d/CMakeFiles/opencv_xfeatures2d.dir/src/brief.cpp.obj[ 56%] Building CXX object modules/xfeatures2d/CMakeFiles/opencv_xfeatures2d.dir/src/daisy.cpp.obj [ 56%] [ 56%] Building CXX object modules/xfeatures2d/CMakeFiles/opencv_xfeatures2d.dir/src/ellipticKeyPoint.cpp.objBuilding CXX object modules/xfeatures2d/CMakeFiles/opencv_xfeatures2d.dir/src/fast.cpp.obj[ 58%] Built target opencv_bioinspired [ 58%] Built target opencv_ximgproc Scanning dependencies of target opencv_ccalib Scanning dependencies of target opencv_dnn_objdetect D:\opencv_contrib-3.4\opencv_contrib-3.4\modules\xfeatures2d\src\boostdesc.cpp:654:20: fatal error: boostdesc_bgm.i: No such file or directory#include "boostdesc_bgm.i"^~~~~~~~~~~~~~~~~ compilation terminated. mingw32-make[2]: *** [modules\xfeatures2d\CMakeFiles\opencv_xfeatures2d.dir\build.make:102: modules/xfeatures2d/CMakeFiles/opencv_xfeatures2d.dir/src/boostdesc.cpp.obj] Error 1 mingw32-make[2]: *** Waiting for unfinished jobs....按照這個教程下載zip包,解壓之后
安裝OpenCV時提示缺少boostdesc_bgm.i文件的問題解決方案(附帶百度云資源)
在這個路徑內(nèi)復(fù)制
D:\opencv_contrib-4.3.0\opencv_contrib-4.3.0\modules\xfeatures2d\src結(jié)果跑到88%還是有錯誤
此處bug參考:樹莓派4的opencv4.1.0–python3.7的開發(fā)環(huán)境安裝
我們回到opencv4.3.0文件夾下復(fù)制下面兩個文件到報錯的路徑下
復(fù)制到如下路徑(總共需要復(fù)制5個hpp文件)
D:\opencv_contrib-4.3.0\opencv_contrib-4.3.0\modules\xfeatures2d\test- 1
修改test_features2d.cpp文件(具體修改哪個文件,需要查看報錯的位置,哪個文件引用)
修改之前
修改之后
#include "test_detectors_regression.impl.hpp" #include "test_descriptors_regression.impl.hpp"- 1
- 2
發(fā)現(xiàn)成功一處,還有一處錯誤
打開test_rotation_and_scale_invariance.cpp文件
修改前
修改后
#include "test_detectors_invariance.impl.hpp" // main OpenCV repo #include "test_descriptors_invariance.impl.hpp" // main OpenCV repo
還有錯誤
同樣的步驟,把相應(yīng)的文件復(fù)制過來,結(jié)果100%成功
100%之后輸入
mingw32-make install- 1
完成之后退出
7.測試使用opencv擴展庫的Qt程序
請參考第5步:測試Qt程序
這里只是在配置了opencv_contrib之后,引入頭文件#include <opencv2/xfeatures2d.hpp>
在mainwindow.cpp文件下添加相應(yīng)的包,添加代碼如下
- ?
到這里:完整的Qt Creator5.12+OpenCV4.3.0+opencv_contrib4.3.0配置就完成了!
8.本文使用的軟件百度網(wǎng)盤下載
鏈接:https://pan.baidu.com/s/1_gRt_bHAjKq6tRlKgF8FLQ
提取碼:4qmo
附上編譯后的文件夾opencv-build
參考博客:
兩個博客都有用
[1]【Qt5.12】Qt5.12安裝教程
[2]win10系統(tǒng)Qt5.12配置OpenCV4.0.1庫教程暨Qt,OpenCV,Cmake詳細下載安裝教程(史上最全!)
總結(jié)
以上是生活随笔為你收集整理的qt调用opencv汇总(2)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 解决: java.net.Connect
- 下一篇: Idea 插件 lombok 的安装和使