QT在Windows上安裝好之后,常規(guī)會兩種編譯器選擇分別是:
-VS2015/2017/2019.... -mingw
因?yàn)槲野惭b了VS2015,所以一直是默認(rèn)VS來編譯,但是發(fā)現(xiàn)當(dāng)從VS編譯切換到mingw時(shí)候,OpenCV的windows版本就無法正確的使用了。這個(gè)時(shí)候要求首先通過mingw來編譯OpenCV的源碼,重新生成OpenCV庫文件與dll文件。本文就詳細(xì)記錄了這個(gè)過程。而且最后通過編譯好的OpenCV集成配置QT開發(fā)環(huán)境,實(shí)現(xiàn)了一個(gè)簡單的測試程序。
軟件版本與環(huán)境配置
版本信息
Windows10 64位 QT5.13 64位 OpenCV4.2 CMake3.17.1
下載地址:
https://opencv.org/opencv-4-2-0/ https://cmake.org/
環(huán)境配置
在安裝好QT,CMake與OpenCV下載解壓縮之后,首先到QT的目錄下,找到mingw編譯工具的bin目錄,添加到系統(tǒng)環(huán)境變量中去,本人安裝好的QT中mingw工具的bin目錄路徑如下:
D:QtQt5.13.1Toolsmingw730_64bin
編譯OpenCV源碼
? ?
編譯OpenCV源碼主要分為如下幾步:
01
cmake配置與生成
雙擊打開安裝好的cmake
選擇好souce路徑與build路徑,本人的分別為:
D:/opencv-4.2.0/opencv/sources D:/opencv-4.2.0/opencv/newbuild
然后點(diǎn)擊 【configure】,就會彈出如下對話框,請選擇mingw makefiles
然后分別設(shè)置
C編譯器D:QtQt5.13.1Toolsmingw730_64bingcc.exe C++編譯器D:QtQt5.13.1Toolsmingw730_64bing++.exe
運(yùn)行完成之后,參見如下選項(xiàng)進(jìn)行配置
- 勾選 WITH_OPENGL - 勾選 WITH_OPENMP - 勾選 BUILD_opencv_world - 不勾選 WITH_OPENCL_D3D11_NV
然后再點(diǎn)擊【generate】按鈕,執(zhí)行完成即可。
注意
這個(gè)過程中你最有可能遇到的錯(cuò)誤就是無法下載ffmpeg庫的問題,解決方法也很容易,讓可以下載的人給你下載,然后直接copy到你的opencvsources3rdpartyffmpeg目錄下即可。然后再次點(diǎn)擊【generate】按鈕即可。
02
生成安裝文件
cmake完成之后,打開cmd,切換到build目錄下,首先執(zhí)行如下的命令行參數(shù)
mingw32-make -j 8
回車之后,就看到如下開始執(zhí)行了,畫面如下:
大概5~10min左右(取決電腦速度)如果沒有報(bào)錯(cuò),就會到達(dá)100%完成。然后執(zhí)行下一個(gè)命令行參數(shù)
mingw32-make install
大概在幾十秒即可很快執(zhí)行完成,執(zhí)行完成之后你就會在這個(gè)目錄得到編譯好的庫與dll文件。
D:opencv-4.2.0opencvnewbuildinstall
很直接的把生成的dll所在路徑添加到環(huán)境變量中,這里為:
D:opencv-4.2.0opencvnewbuildinstallx64mingwbin
使用OpenCV+QT實(shí)現(xiàn)圖像顯示
? ?
通過一個(gè)簡單的OpenCV讀取圖像,在QT中QLabe顯示來驗(yàn)證上述編譯好的庫可以使用。直接通過QT Creator來新建一個(gè)QT Application程序,導(dǎo)入OpenCV庫依賴(不知道怎么操作,請看結(jié)尾的鏈接,通過視頻學(xué)習(xí)即可!),然后在mainwindow.cpp中實(shí)現(xiàn)如下代碼:
#include"mainwindow.h" #include"ui_mainwindow.h" #include"opencv2/opencv.hpp" #include"QHBoxLayout" #include"QLabel" MainWindow::MainWindow(QWidget*parent) :QMainWindow(parent) ,ui(newUi::MainWindow) { ui->setupUi(this); QHBoxLayout*layout=newQHBoxLayout(ui->centralwidget); QLabel*label=newQLabel(); layout->addWidget(label); cv::Matmat=cv::imread("D:/images/pedestrain_01.jpeg"); cv::cvtColor(mat,mat,cv::COLOR_BGR2RGB); QImageimg=QImage(mat.data,mat.cols,mat.rows,mat.step,QImage::Format_RGB888); intw=img.width(); inth=img.height(); if(w>800||h>800){ doublerate=800.0/std::max(w,h); intnw=static_cast(rate*w); intnh=static_cast (rate*h); img=img.scaled(QSize(nw,nh),Qt::KeepAspectRatio); } QPixmapmp; mp=mp.fromImage(img); label->setPixmap(mp); label->setAlignment(Qt::AlignCenter); mat.release(); } MainWindow::~MainWindow() { deleteui; }
記得創(chuàng)建項(xiàng)目的選擇編譯器為mingw啊,然后選擇構(gòu)建為release。
-
WINDOWS
+關(guān)注
關(guān)注
3文章
3526瀏覽量
88451 -
編譯器
+關(guān)注
關(guān)注
1文章
1618瀏覽量
49057 -
OpenCV
+關(guān)注
關(guān)注
30文章
628瀏覽量
41274
原文標(biāo)題:使用MinGW編譯OpenCV4源碼與配置使用演示
文章出處:【微信號:CVSCHOOL,微信公眾號:OpenCV學(xué)堂】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論