日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

Qt调用OpenCV汇总(1)

發(fā)布時(shí)間:2023/12/18 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Qt调用OpenCV汇总(1) 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

//*************************************************************************************************************1

在Qt Creator上新建一個(gè)項(xiàng)目。
右鍵新項(xiàng)目>>添加庫(kù)…>>外部庫(kù)>>選中庫(kù)文件路徑>>下一步,完成,添加到.pro文件中。


然后再在pro文件中手動(dòng)輸入下面代碼:

INCLUDEPATH += D:\opencv\build\include\D:\opencv\build\include\opencv\D:\opencv\build\include\opencv2\

當(dāng)然每個(gè)人OpenCV的安裝路徑是不一樣的,你要找到你的安裝路徑下。
然后舉個(gè)例子吧。
.pro文件:

QT += core gui greaterThan(QT_MAJOR_VERSION, 4): QT += widgets INCLUDEPATH += D:\opencv\build\include\D:\opencv\build\include\opencv\D:\opencv\build\include\opencv2\ win32:CONFIG(release, debug|release): LIBS += -LD:/opencv/build/x64/vc14/lib/ -lopencv_world342 else:win32:CONFIG(debug, debug|release): LIBS += -LD:/opencv/build/x64/vc14/lib/ -lopencv_world342d else:unix: LIBS += -LD:/opencv/build/x64/vc14/lib/ -lopencv_world342 INCLUDEPATH += D:/opencv/build/x64/vc14 DEPENDPATH += D:/opencv/build/x64/vc14 SOURCES += \main.cpp \mainwindow.cpp HEADERS += \mainwindow.h FORMS += \mainwindow.ui
  • ?

main.cpp

#include "mainwindow.h" #include <QApplication>int main(int argc, char *argv[]) {QApplication a(argc, argv);MainWindow w;w.show();return a.exec(); }

mainwindow.h

#ifndef MAINWINDOW_H #define MAINWINDOW_H#include <QMainWindow> #include <QFileDialog>//文件對(duì)話框 #include <opencv2/core/core.hpp>//opencv相關(guān)的庫(kù)文件 #include <opencv2/highgui/highgui.hpp> using namespace cv;namespace Ui { class MainWindow; }class MainWindow : public QMainWindow {Q_OBJECTpublic:explicit MainWindow(QWidget *parent = 0);//explicit是顯式的意思,構(gòu)造函數(shù),繼承父類~MainWindow();//析構(gòu)函數(shù)private slots://私有槽函數(shù)void on_pushButton_clicked();//聲明按鍵void on_pushButton_2_clicked();private:Ui::MainWindow *ui;Mat image; };#endif // MAINWINDOW_H

mainwindow.cpp

#include "mainwindow.h"//頭文件 #include "ui_mainwindow.h"//ui界面頭文件MainWindow::MainWindow(QWidget *parent) :QMainWindow(parent),ui(new Ui::MainWindow) {ui->setupUi(this);ui->pushButton_2->setEnabled(false);//初始按鍵2不能使用 }MainWindow::~MainWindow() {delete ui; }void MainWindow::on_pushButton_clicked()//按鍵定義 {//調(diào)用窗口打開(kāi)文件QString filename = QFileDialog::getOpenFileName(this,tr("open image"),".",tr("Image file(*.png *.jpg *.bmp)"));image = imread(filename.toLocal8Bit().data());if(image.data) {ui->pushButton_2->setEnabled(true);//按鍵2恢復(fù)}//將Mat圖像轉(zhuǎn)換為QImage圖像,才能顯示在label上QImage img = QImage((const unsigned char*)(image.data),image.cols, image.rows, QImage::Format_RGB888);//格式轉(zhuǎn)換//設(shè)定圖像大小自適應(yīng)label窗口的大小img = img.scaled(ui->label->size(), Qt::IgnoreAspectRatio, Qt::SmoothTransformation);ui->label->setPixmap(QPixmap::fromImage(img)); }void MainWindow::on_pushButton_2_clicked() {flip(image, image, 1);QImage img = QImage((const unsigned char*)(image.data),image.cols, image.rows, QImage::Format_RGB888);img = img.scaled(ui->label->size(), Qt::IgnoreAspectRatio, Qt::SmoothTransformation);ui->label->clear();//清除窗口ui->label->setPixmap(QPixmap::fromImage(img));//顯示其它圖像 }

mainwindow.ui

然后就可以運(yùn)行,測(cè)試一下代碼了。。。

//**************************************************************************2

QT creator中使用opencv

??? 最近要用到opencv做圖像方面的東西,網(wǎng)上很多是用VS加opencv,但自己對(duì)VS不怎么喜歡,想用QT Creator。在網(wǎng)上搜索了很多資料,終于花了一天的時(shí)間,在QT Creator上能使用opencv了。

??? 需要的軟件:(1)QT Creator。我的版本是4.8.5。這個(gè)版本還是在學(xué)習(xí)亞飛的QT Creator的時(shí)候安裝的,網(wǎng)上有說(shuō)QT版本低,而opencv版本高的話,可能在執(zhí)行mingw32-make命令會(huì)報(bào)錯(cuò)。因此為了以防萬(wàn)一,我下載的低版本的opencv

??????????????????????(2)opencv。我的版本是2.3.0

?????????????????????(3)cmake 下載地址http://www.cmake.org/cmake/resources/software.html

另外我的計(jì)算機(jī)的操作系統(tǒng)是xp,32位的。

??? 首先將QT creator, cmake安裝好,這個(gè)蠻簡(jiǎn)單的。而安裝opencv,設(shè)置解壓路徑就可以了。安裝CMake要注意:(1)安裝路徑不能有中文和空格(2)勾選加入所有境變量中。

??? 將C:\Qt\mingw\bin加入系統(tǒng)變量。

????CMake OpenCV,使用CMake(http://www.cmake.org/)生成OpenCV庫(kù)的makefile文件,需要注意的是解壓出來(lái)的OpenCV存儲(chǔ)路徑中的文件夾不要帶有空格或者中文(我的是E:\OpenCV,不要用類似于E:\工程\opencv, E:\Open CV這種),打開(kāi)CMake,指定源碼位置(就是OpenCV解壓出來(lái)的地方)和存放生成文件的地方,Configure彈出如圖對(duì)話框,選擇MinGW Makefiles和Specify native compilers

????

跳出對(duì)話框用以指定C++和C的編譯器路徑,C用gcc.exe,在QtSDK目錄下的mingw/bin子目錄中,C++用g++.exe:

?

然后再次Configure,無(wú)錯(cuò)誤后選中WITH_QT

再次Configure會(huì)出現(xiàn)下圖信息提示找不到Qt的Qmake可執(zhí)行文件

?

手動(dòng)指定Qmake.exe所在目錄

(注意這張圖是我在網(wǎng)上復(fù)制的別人的)

再次Configure,無(wú)錯(cuò)誤后?Generate。

?

?1> Cmd命令 轉(zhuǎn)到Generate到的目錄(我的是F:\OpenCV)

??cd F:\OpenCV

?2> Cmd命令 編譯文件

?>>?mingw32-make

?3> Cmd命令 編譯INSTALL

?>>?mingw32-make install

?

?

下面開(kāi)始配置Qt Creator的OpenCV開(kāi)發(fā)環(huán)境,拷貝下面三個(gè)文件夾放在同一個(gè)文件夾下(只需這三個(gè)目錄,其余生成的文件和文件夾可以刪除,以節(jié)省磁盤空間)

?

(1)OpenCV-2.3.0安裝目錄下的build/include目錄

(2)CMake目標(biāo)路徑下,MinGW編譯后的bin目錄

(3)CMake目標(biāo)路徑下,MinGW編譯后的lib目錄

拷貝三個(gè)目錄到同一目錄后的結(jié)構(gòu)如下圖(我刪除了原來(lái)的CMake目標(biāo)目錄中的其他目錄,拷貝進(jìn)來(lái)了include目錄)

?

?將bin目錄添加到系統(tǒng)環(huán)境變量

至此Qt Creator下的OpenCV開(kāi)發(fā)環(huán)境已經(jīng)配置好,下面在Qt Creator下測(cè)試是否已經(jīng)配置成功

打開(kāi)Qt Creator,新建一個(gè)空工程,然后添加一個(gè)cpp文件,任意命名

?在pro文件中添加如下OpenCV的依賴文件

INCLUDEPATH+=C:\OpenCV\include\opencv\

????????????????????C:\OpenCV\include\opencv2\

????????????????????C:\OpenCV\include

?

LIBS+=C:\OpenCV\lib\libopencv_calib3d230.dll.a\

????????C:\OpenCV\lib\libopencv_contrib230.dll.a\

????????C:\OpenCV\lib\libopencv_core230.dll.a\

????????C:\OpenCV\lib\libopencv_features2d230.dll.a\

????????C:\OpenCV\lib\libopencv_flann230.dll.a\

????????C:\OpenCV\lib\libopencv_gpu230.dll.a\

????????C:\OpenCV\lib\libopencv_highgui230.dll.a\

????????C:\OpenCV\lib\libopencv_imgproc230.dll.a\

????????C:\OpenCV\lib\libopencv_legacy230.dll.a\

????????C:\OpenCV\lib\libopencv_ml230.dll.a\

????????C:\OpenCV\lib\libopencv_objdetect230.dll.a\

????????C:\OpenCV\lib\libopencv_video230.dll.a

這樣以后,就可以在主函數(shù)中正常編寫自己的程序了。

//**********************************************************************************3

用Qt Creator編譯opencv并配置開(kāi)發(fā)環(huán)境

前言

opencv是一個(gè)跨平臺(tái)計(jì)算機(jī)視覺(jué)庫(kù),使用前需要把它編譯成二進(jìn)制的靜態(tài)庫(kù)和動(dòng)態(tài)庫(kù),之后在代碼中直接連接到二進(jìn)制庫(kù)。

網(wǎng)上很多教程都是用CMake配合MinGW編譯opencv,其中需要用到命令行操作,其實(shí)有更簡(jiǎn)單的方法,Qt Creator支持CMake,可以直接用Qt Creator在圖形界面中編譯好opencv。

對(duì)于各個(gè)C++ IDE的看法

我試過(guò)vs2015,eclipse,code blocks,Qt Creator,各有優(yōu)缺點(diǎn)。

  • vs2015
    opencv for windows中有已經(jīng)編譯好的文件可以直接調(diào)用,不需要再手動(dòng)編譯opencv。但是vs太過(guò)龐大,功能復(fù)雜,打開(kāi)界面十分緩慢,用起來(lái)有點(diǎn)麻煩,不適合初學(xué)者。并且vs只能在windows上用,我更喜歡多平臺(tái)通用的IDE。

  • eclipse
    打開(kāi)界面的速度比vs還要慢,果斷放棄。

  • code blocks
    功能強(qiáng)大,界面不太漂亮,比vs還要復(fù)雜的界面讓新手無(wú)所適從。

  • Qt Creator
    Qt Creator的界面很簡(jiǎn)潔美觀,啟動(dòng)速度很快,并且適合以后用Qt開(kāi)發(fā)圖形交互界面,支持windows、Linux、Mac多個(gè)平臺(tái),內(nèi)聯(lián)CMake,十分適合新手作為開(kāi)發(fā)環(huán)境。


準(zhǔn)備

  • 安裝CMake
  • 安裝Qt Creator
  • 下載opencv
  • 1. 安裝CMake

    編譯opencv需要用到CMake這個(gè)工具。

  • 下載:https://CMake.org/download/
    建議下載安裝版的,這個(gè)可以自動(dòng)加入系統(tǒng)環(huán)境變量。

  • 安裝,選擇第二個(gè),為所有用戶添加系統(tǒng)路徑。之后Qt可以自動(dòng)找到CMake。

  • 2. 安裝Qt Creator

  • 下載:https://www.qt.io/download-open-source/#section-2
    選擇離線安裝包,在線安裝太慢,經(jīng)常會(huì)安裝失敗。

    選擇MinGW版本。VS 版本還需要安裝對(duì)應(yīng)的VS,單獨(dú)安裝Qt 是不可用的,而MinGW版本自身帶有MinGW。

    建議下載最新版本,因?yàn)槔锩鎺У腗inGW版本較高,如果MinGW版本比opencv需要的版本低會(huì)編譯失敗。

  • 安裝:安裝路徑不能有空格,我安裝在默認(rèn)路徑,然后一路NEXT。

  • 3. 下載opencv

    下載opencv for Linux
    http://opencv.org/downloads.html

    opencv for windows 跟 opencv for Linux 的源碼是一樣的,只是
    opencv for windows 里面多了以編譯好的 opencv,這個(gè)我們不需要,只要下載源碼就行了。

    如果編譯失敗,試試其他版本的opencv。
    我在Ubuntu上編譯3.1版失敗,編譯2.4.13和3.0.成功,在windows上編譯3.1成功,3.0卻失敗,試了不少于10次,之后才意識(shí)到跟MinGW版本有關(guān),MinGW版本要跟opencv版本對(duì)應(yīng)才能編譯成功。


    編譯opencv

  • 確認(rèn)Qt成功找到 CMake
    打開(kāi) Qt Creator,工具->選項(xiàng)->構(gòu)建和運(yùn)行->CMake,如果之前 CMake 配置好了系統(tǒng)路徑,這里應(yīng)該會(huì)自動(dòng)加載到系統(tǒng)路徑,否則手動(dòng)指定CMake的路徑。

  • 用 Qt 打開(kāi) opencv 項(xiàng)目
    【Open Project】打開(kāi) opencv 的 CMakeLists.txt

    之后會(huì)出現(xiàn)一個(gè) Configure Project 窗口,配置編譯時(shí)產(chǎn)生的中間文件保存的路徑,這些不用改,直接點(diǎn)擊 Configure Project 按鈕。中間文件會(huì)保存在跟 opencv 的文件夾在同一路徑的一個(gè)文件夾,編譯完刪掉就好了。

  • 進(jìn)入【項(xiàng)目】,編譯構(gòu)造配置選擇Release。

    然后等幾分鐘,這段時(shí)間 Qt 正在讀取 CMakeLists.txt 文件,當(dāng)在概要信息看到 Configuring done 和 Generating done 就讀取完了。

  • 進(jìn)入【項(xiàng)目】,找到 CMAKE_INSTALL_PREFIX,設(shè)置一個(gè)路徑,這個(gè)路徑是編譯完成后輸出的路徑。其他配置保持默認(rèn)。然后點(diǎn)擊 Apply Configuration Changes。未保存的內(nèi)容會(huì)是粗體字,已改變的配置將會(huì)是斜體字,再點(diǎn)一次 Apply Configuration Changes,Apply Configuration Changes 按鈕將會(huì)變成灰色。

  • 再到構(gòu)建步驟,詳情,勾選install,然后點(diǎn)右下角的“錘子”,開(kāi)始構(gòu)建。構(gòu)建過(guò)程要保持網(wǎng)絡(luò)通暢,因?yàn)闃?gòu)建時(shí)會(huì)下載部分文件。這個(gè)過(guò)程會(huì)花半個(gè)小時(shí)左右,當(dāng)“編譯輸出”中顯示“正常退出”,表示構(gòu)建成功,在 CMAKE_INSTALL_PREFIX 路徑中可以看到產(chǎn)生的文件。如果編譯失敗,則換個(gè)opencv版本,重新嘗試。


  • 配置opencv開(kāi)發(fā)環(huán)境

    編譯好的opencv會(huì)有以下這些文件夾,把這些文件放到合適的位置。我就放在c盤opencv文件夾里了。

  • 配置opencv系統(tǒng)路徑
    對(duì)計(jì)算機(jī)右鍵->屬性->高級(jí)系統(tǒng)配置->環(huán)境變量>Path 變量里加入 opencv 的 bin 文件夾的路徑,用分號(hào)跟其他路徑分隔。

  • 新建Qt項(xiàng)目

    常用的項(xiàng)目類型的說(shuō)明:

    • Qt console Application:Qt的控制臺(tái)項(xiàng)目,不創(chuàng)建Qt的圖形界面,只會(huì)打開(kāi)一個(gè)cmd窗口。
    • 【Non-Qt Projectt】->plain C/C++ Application:創(chuàng)建的項(xiàng)目不帶有Qt的庫(kù),最適合學(xué)習(xí)C/C++。創(chuàng)建后主程序就已存在一個(gè)Hello World!示例。

  • 給qt項(xiàng)目添加頭文件路徑和靜態(tài)庫(kù)路徑
    在.pro文件中添加以下代碼。每次新建項(xiàng)目都要添加,好在復(fù)制粘貼很方便。

  • INCLUDEPATH += C:/opencv/include \C:/opencv/include/opencv \C:/opencv/include/opencv2LIBS += C:/opencv/x86/mingw/lib/libopencv_*


    測(cè)試

    新建一個(gè)plain C/C++ Application,寫入以下代碼,cvLoadImage( )函數(shù)里填入一張照片的路徑,如果能編譯成功并顯示照片就配置成功了。

    注意文件的路徑是正斜杠,不是windows路徑的反斜杠,如果用反斜杠得這樣寫:"D:\\Pictures\\RoboMasters.jpg"

    #include "opencv/highgui.h"int main(int argc, char *argv[]) {IplImage* img = cvLoadImage("D:/Pictures/RoboMasters.jpg");if (img == NULL)return 1;cvNamedWindow("abc",CV_WINDOW_AUTOSIZE);cvShowImage("abc",img);cvWaitKey(0);cvReleaseImage(&img);cvDestroyAllWindows();return 0; }

    關(guān)于Qt的動(dòng)態(tài)庫(kù)

    在Qt中用Ctrl+R可以成功運(yùn)行程序,但是直接雙擊程序運(yùn)行卻會(huì)提示缺少libgcc_s_dw2-1.dll,這是因?yàn)槿鄙貿(mào)t的動(dòng)態(tài)庫(kù)。

    解決方法是發(fā)布軟件時(shí)把動(dòng)態(tài)庫(kù)添加到工程目錄里。方法如下:

  • 添加系統(tǒng)環(huán)境路徑
    C:\Qt\Qt5.7.0\5.7\mingw530_32\bin
    C:\Qt\Qt5.7.0\Tools\mingw530_32\bin
    兩個(gè)路徑之間用分號(hào)“;”分隔。

    做完這一步可以在自己電腦直接雙擊打開(kāi)編譯好的軟件 ,但是在別人電腦里依然是缺少文件。

  • 打包動(dòng)態(tài)庫(kù)
    Qt 官方開(kāi)發(fā)環(huán)境里自帶了一個(gè)工具:windeployqt.exe。
    win+r 然后輸入 cmd 打開(kāi)命令提示行,切換到編譯完的軟件目錄下,假設(shè)軟件名叫 abc.exe,在命令行里輸入 windeployqt abc.exe,就會(huì)把需要的動(dòng)態(tài)庫(kù)都復(fù)制到該軟件目錄下

  • //**********************************************************************************4

  • 在Qt Creator開(kāi)發(fā)環(huán)境中配置OpenCV庫(kù)的簡(jiǎn)明步驟

  • 1、說(shuō)明

    OpenCV庫(kù)是一套全面而簡(jiǎn)潔的計(jì)算機(jī)視覺(jué)算法庫(kù),OpenCV主要由一些C及C++函數(shù)和類構(gòu)成。在Windows平臺(tái)上開(kāi)發(fā)視覺(jué)算法時(shí),Visual Studio IDE無(wú)疑是一款強(qiáng)大的工具軟件,但是,如果要給我們的OpenCV視覺(jué)算法加上漂亮的用戶界面,即GUI,將會(huì)變得有些麻煩。在Visual Studio中,可以將OpenCV與MFC相結(jié)合開(kāi)發(fā)界面,然而,MFC太龐大,且涉及到多線性(Multi-Thread)、先進(jìn)圖形圖像顯示、跨平臺(tái)等需求時(shí),使用MFC開(kāi)發(fā)OpenCV算法界面會(huì)變得讓人抓狂(姑且這么說(shuō)吧)。另一種技術(shù),就是在Visual Studio中,我們?cè)谝曈X(jué)解決方案中可以建立C#工程,通過(guò)C#構(gòu)建界面,這里,Visual Studio自帶強(qiáng)大的Blend界面設(shè)計(jì)工具,那么問(wèn)題又來(lái)了:C#和C++語(yǔ)言體系不同,C#為解釋型語(yǔ)言,C++為編譯型語(yǔ)言,OpenCV本身為C++代碼,二者在代碼和數(shù)據(jù)交互上存在太多麻煩的轉(zhuǎn)換,轉(zhuǎn)換的過(guò)程浪費(fèi)開(kāi)發(fā)時(shí)間。

    因此,涉及到本文的主要目的,即:在Qt中引入OpenCV庫(kù),將Qt擅長(zhǎng)的界面和OpenCV擅長(zhǎng)的視覺(jué)算法有機(jī)結(jié)合起來(lái),從而讓我們快速的進(jìn)行項(xiàng)目的構(gòu)建和開(kāi)發(fā)。

    ?

    2、配置

    網(wǎng)上也有不少相關(guān)方法,本文說(shuō)的是簡(jiǎn)明步驟,因此只簡(jiǎn)要描述一下關(guān)鍵的步驟。

    1、手頭上要有OpenCV庫(kù),推薦的OpenCV庫(kù)文件目錄組織方式為:一個(gè)opencv主目錄,一個(gè)include子目錄(存放頭文件),一個(gè)bin子目錄(存放動(dòng)態(tài)鏈接庫(kù).dll文件),一個(gè)lib文件(存放靜態(tài)鏈接庫(kù).lib文件)。這樣的組織方式更容易配置項(xiàng)目且便于移動(dòng)和共享。(這里可下載最新的OpenCV庫(kù)文件)

    2、正確安裝的Qt及Qt Creator開(kāi)發(fā)環(huán)境。這里要注意Qt Creator構(gòu)建套件部分的設(shè)置,下圖為我的設(shè)置。尤其要正確設(shè)置編譯器和調(diào)試器。

    3、將OpenCV文件放置在某個(gè)磁盤位置,例如D盤根目錄,如下圖。將bin目錄添加到系統(tǒng)的環(huán)境變量PATH中,添加完成后要重啟系統(tǒng)。

    ?

    4、在Qt Creator中新建工程項(xiàng)目,在項(xiàng)目配置文件.pro中填入如下紅色框中的命令,然后點(diǎn)擊菜單欄“構(gòu)建”->“執(zhí)行qmake”。

    ?

    5、完成以上工作后,便可在工程中引入OpenCV頭文件,并編寫調(diào)用代碼了。如下圖所示。

  • 總結(jié)

    以上是生活随笔為你收集整理的Qt调用OpenCV汇总(1)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

    如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。