1. 程式人生 > >[OpenCV Qt教程] 在Qt圖形介面中顯示OpenCV影象的OpenGL Widget(第二部分)

[OpenCV Qt教程] 在Qt圖形介面中顯示OpenCV影象的OpenGL Widget(第二部分)

在第一部分教程之後,我們建立了一個Qt Widget在GUI中顯示OpenCV影象,接下來我們要看看如何使用它。

現在我們建立一個簡單的應用來繪製從網路攝像頭中獲取的流媒體視訊,這是每一個OpenCV應用的基礎。

本教程需要Qt Creator和Qt的基礎知識,如果你覺得哪一步不清楚或是沒有被充分的說明,請不要猶豫,立刻通過email聯絡我(原作者)

讓我們從開啟Qt Creator開始。Qt也能在其他工作環境下使用( Eclipse, Visual Studio, …) ,但是說實話我更喜歡在原汁原味的環境下使用它,為Qt專門設計的環境能更好的利用Qt的所有特性。

首先新建一個工程,選擇 “Qt Widget Project” -> “Qt GUI Application”。

譯者注:類名QtGLWebcamDemo,基類選擇QMainWindow。

然後將第一部分教程建立的檔案拷貝到工程資料夾中。

在工程中“新增現有檔案”,“cqtopencvviewergl.h” 和 “cqtopencvviewergl.cpp”。

之後向我們的GUI中新增一個OpenGL-OpenCV 的部件。

  • 開啟介面檔案
  • 從左側“Containers”中拖入一個標準的Widget
  • 將這個widget命名為“openCVviewer”
  • 選中這個widget,之後右鍵選擇“提升為” (“Promote to”)
  • 在“提升的類名稱”中輸入“CQtOpenCVViewerGl”
  • 在窗體上右鍵,選擇“佈局”中的“柵格佈局”,使得widget佈滿可用區域

基本的介面就準備好了,現在我們需要配置工程檔案讓其可以使用OpenCV:

  • 開啟“pro”檔案,新增:INCLUDEPATH += 你的OpenCV目錄 (對於Linux: INCLUDEPATH += /usr/local/opencv2/)
  • 再新增 LIBS += -lopencv_core -lopencv_highgui

譯者注:如果你是按照譯者之前關於Qt&OpenCV的部落格中配置的開發環境,可按如下格式修改pro檔案:

INCLUDEPATH += D:\opencv_mingw\install\include

LIBS += “D:\opencv_mingw\bin\libopencv_*.dll”

現在這個程式已經準備好應用OpenCV了,我們可以開始寫程式碼來顯示攝像頭的影象了。

在窗體中的選單欄中插入一個“Start”項:

  • 選擇選單欄,點選“在這裡輸入”,輸入“Camera”
  • 選擇“Camera”,在下拉選單中的“在這裡輸入”中,輸入“Start”

在“Action Editor”欄中的“actionStart” 項上右鍵,選擇“轉到槽”->”triggered()”。

Qt Creator 會自動生成一個函式,當用戶點選 “Camera”中的”Start”時就會呼叫這個函式。

在這裡,我們的函式很簡單:

void QtGLWebcamDemo::on_actionStart_triggered()
{
    if( !mCapture.isOpened() )
        if( !mCapture.open( 0 ) )
            return;

    startTimer(50);
}

mCapture 是我們的GUI中的一個私有變數:

cv::VideoCapture mCapture;

要記住,為了使用VideoCapture ,必須在程式中包含OpenCV的 “HighGUI” 模組。

#include <opencv2/highgui/highgui.hpp>

這個應用要使用定時器,我們每一個50ms獲取新的攝像頭影象,並且將影象傳遞給我們的OpenGL widget。

在主要的類中新增定時器函式。

protected:
     void timerEvent(QTimerEvent *event);

它包含了如下的簡單程式碼:

void QtGLWebcamDemo::timerEvent(QTimerEvent *event)
{
    cv::Mat image;
    mCapture >> image;

    // Show the image
    ui->openCVviewer->showImage( image );
}

這個使用了Qt、OpenCV、OpenGL來顯示攝像頭影象的簡單應用就準備好了,你只需要編譯執行就可以看看效果了。

完整程式碼可在Github上獲取:

相關推薦

[OpenCV Qt教程] 在Qt圖形介面顯示OpenCV影象OpenGL Widget(第二部分)

在第一部分教程之後,我們建立了一個Qt Widget在GUI中顯示OpenCV影象,接下來我們要看看如何使用它。 現在我們建立一個簡單的應用來繪製從網路攝像頭中獲取的流媒體視訊,這是每一個OpenCV應用的基礎。 本教程需要Qt Creator和Qt

QT介面顯示動態圖片

我的這個方法是在介面中新增一個label然後在label中顯示GIF圖片,且動態圖片大小會和label大小一樣第一步先新增一個資原始檔然後把你想要播放的動態圖片新增到資原始檔中然後在介面中新增一個label控制元件,剩下的就要寫程式碼了#include "widget.h"

QT學習day02---圖形介面、對話方塊、訊號與槽

一、QT圖形介面 ①QT座標軸 起點:左上角 X:橫軸 Y:縱軸 ②QWidget、QDialog、QMainWindow的異同點 QWidget:視窗為空,什麼內容都沒有 QMainWindow:含有選單欄,狀態列,工具欄等…已經包含了QWidget QDialog:對話方塊(

QT讀取本地txt影象資料並在介面顯示影象

int pixel[180*1500]; int i=0; char filenametxt[150] = "inputimg.txt"; ifstream infile(filenametxt,ios::in); //測試檔案是否成功開啟 if(

Python與Qt UI的圖形介面程式設計(三)

Qt提供了很多關於獲取窗體位置及顯示區域大小的函式,本例項利用一個簡單的對話方塊顯示窗體的各種位置資訊,包括窗體的所在點位置,長,寬資訊等。本例項的目的是分析各個有關位置資訊的函式之間的區別,如x(),y(),pos(),rect(),size(),geometry()等

Python與Qt UI的圖形介面程式設計(一)

本例項實現一個"Hello Kitty!"例子,簡單介紹Qt程式設計的基本流程,以及Qt程式的編繹執行方式,例項效果圖如圖所示。   這是一個簡單的例子,整個對話方塊只有一個按鈕,單擊該按鈕,對話方塊關閉,退出程式。 實現程式碼如下: from PyQt4.QtGu

MFC+Opencv在單文件程式顯示出一幅影象

在MFC中顯示一幅影象程式是十分複雜的,而在Opencv中讀入一幅影象只需要一句話,而且很多的影象處理操作都需要使用Opencv中已有的函式,所以在MFC中呼叫Opencv的函式顯示一幅影象是很必要的操作。現在網上很多相關的描述都很不詳盡,我總結並編寫程式測試後,依次介紹在對話方塊程式和單文件程式中

【Stimulsoft Reports.Net教程】在ViewerFx顯示報表

此示例專案演示瞭如何在ASPX頁面上新增Flash檢視器並顯示簡單報表。要新增Flash檢視器,只需從Stimulsoft.Report.Web庫中新增StiWebViewerFx元件即可。 <%@ Page Language="C#" AutoEventWire

MFC/C# 顯示 OpenCV 的 Mat

在 OpenCV 2.2 版本之前有個類叫做 Cvvimage 可以在 MFC 中顯示 IplImage ,但是自從 2.2 版本之後這個類就消失了,有人把之前版本的程式碼摳出來繼續用,但是這樣也不是很方便,比如在 C++ 中還得把 Mat 轉換為 IplImage。為此找

怎麼樣將資料庫的表在Java介面顯示出來

import javax.swing.*; import javax.swing.table.JTableHeader; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.sql.*;

TamperIE使用教程 TamperIE圖形介面操作教程(圖文)

http://www.pw88.com/teach/anquan/181.html:開啟IE,選選單中“檢視”----“工具欄”----“自定義”,在彈出的“自定義工具欄”對話方塊中,將TamperIE Control Panel新增到右邊的“當前工具欄按鈕”,關閉後IE的快

Python圖形介面設定尺寸的問題

   Python有自己內建的標準GUI庫--Tkinter,只要安裝好Python就可以呼叫。今天學習到了圖形介面設計的問題,剛開始就卡住了。為啥呢?就是用geometry(size)設定視窗尺寸大小,如800X600,“X”從哪裡來成了問題。首先想到,這是個乘號,但是在程式中沒有插入特殊符號這一說啊。所以

OpenCV入門教程之七】 玩轉OpenCV原始碼:生成OpenCV工程解決方案與OpenCV原始碼編譯

毛星雲,網路ID「淺墨」,90後,熱愛遊戲開發、遊戲引擎、計算機圖形、實時渲染等技術,就職於騰訊互娛。 微軟最有價值專家 著作《Windows遊戲程式設計之從零開始》、《OpenCV3程式設計入門》 碩士就讀於南京航空航天大學航天學院(2013級碩士研究生),已於2016年三月畢業。本科

codeblocks搭建opencv完整教程(二)—— MinGW版OpenCV配置方法

codeblocks預設的編譯器是MinGW,而當前所用OpenCV版本是2.4.10,所帶build中的lib庫只有vc10,vc11,vc12三個版本,這些都是VS編譯器編譯出來的,放在MinGW環境下自然會出問題了。之所以執行OpenCV的C介面程式碼沒問題,個人推斷是因為C介面的OpenCV 1.0時

QT GUI介面的使用 opencv選擇並顯示圖片於label

是上一篇文章程式碼的修改。 新建的是widget,QT5之後,ui介面的程式已經不叫做QT4 GuiApplication之類的了,不過作用都一樣。 如圖 建立之後,在左側Forms裡找到 .ui開啟,是介面視窗,我們拖入兩個push button,和

OpenCV學習筆記(二十五)——OpenCV圖形介面設計Qt+VS2008

一直對MFC對OpenCV的支援不好而耿耿於懷,瞭解了Qt對OpenCV支援很好,但網上這方面的資料很少。大部分的圖形互動的設計都是基於OpenCV2.0之前的資料結構lpImage進行的。最近得到了一本好書《OpenCV 2 Computer Vision Applica

Qt 的訊號與槽,連線日誌庫QsLog,在介面顯示出日誌資訊

新建一個基於QWidget的工程,在介面上新增一個QTextBrowser控制元件,用來在介面顯示日誌資訊。 在pro檔案中新增QsLog的標頭檔案和lib庫 INCLUDEPATH += include/QsLog.h \ inc

OpenCVQt顯示視訊的兩種方法

參考:http://blog.csdn.net/augusdi/article/details/8865541 程式碼如下: 注意,要在ui介面上放置一個“Vertical Layout”控制元件,調整到合適大小 #include <QtWidgets/QMainWi

opencv+QT+vs 顯示圖片總結

opencv支援QT,QT也有vs外掛,所以學習一下用QT顯示圖片的方法,實現的是圖片的讀取顯示與反轉顯示。 各種配置完成之後,在vs中新建一個qt專案,專案名字不要有中文,一路確定、下一步,直到完成。 在專案下面會自動生成一些檔案。.ui為qt設計檔案,雙

Qt 3D教程(二)初步顯示3D的內容

初始 應用 frame 通過 net settings mod rgba bsp Qt3D教程(二)初步顯示3D的內容 前一篇很easy,全然就沒有牽涉到3D的內容,它僅僅是我們搭建3D應用的基本框架而已,而這一篇。我們將要利用它來初步地顯示3D