1. 程式人生 > >【Qt開發】Qt中顯示影象的兩種方法對比

【Qt開發】Qt中顯示影象的兩種方法對比

在Qt中處理圖片一般都要用到QImage類,但是QImage的物件不能夠直接顯示出來,要想能看到圖片,初步發現有兩種方法。

一、QImage轉QPixmap,然後用QLabel::setPixmap()

image=new QImage("D:/Temp/XX.jpg");

pixmap=newQPixmap();
pixmap->convertFromImage(*image);
label=newQLabel(this);
label->setGeometry(100,0,1000,700);
label->setPixmap(*pixmap);
二、在paintEvent()中直接畫
void MyWindow::paintEvent(QPaintEvent*)
{
QPainter paint(this);
paint.drawImage(0,0,*image);
}
    有兩種方法,就有比較。經過試驗發現,第一種方法效率更高,雖然程式碼開起來多了,但是經過優化用於顯示的QPixmap能夠體現出其優勢。同樣顯示一幅1200*1600的圖片,第一種方法幾乎不需要時間,用毫秒計時顯示為0,而第二種方法需要15ms,在需要大量運算的地方,15ms的差距區別可是相當大的。

相關推薦

Spark篇---Sparkyarn模式提交任務方式

一、前述Spark可以和Yarn整合,將Application提交到Yarn上執行,和StandAlone提交模式一樣,Yarn也有兩種提交任務的方式。二、具體           1、yarn-client提交任務方式配置         在client節點配置中spark

Spark篇--SparkStandalone的提交模式

一、前述Spark中Standalone有兩種提交模式,一個是Standalone-client模式,一個是Standalone-master模式。二、具體        1、Standalone-client提交任務方式提交命令            ./spark-sub

Qt開發QT顯示影象資料

一般影象資料都是以RGBRGBRGB……位元組流的方式(解碼完成後的原始影象流),我說成位元組流,那就表明R,G,B的值各佔一個位元組,在程式設計時表示的就是unsigned char * data。        我們先來看一下QT中的QImage物件。在載入data資料

Qt開發Qt顯示影象方法對比

在Qt中處理圖片一般都要用到QImage類,但是QImage的物件不能夠直接顯示出來,要想能看到圖片,初步發現有兩種方法。 一、QImage轉QPixmap,然後用QLabel::setPixmap() image=new QImage("D:/Temp/XX.jpg

Qt開發QThread的互斥、讀寫鎖、訊號量、條件變數

在gemfield的《從pthread到QThread》一文中我們瞭解了執行緒的基本使用,但是有一大部分的內容當時說要放到這片文章裡討論,那就是執行緒的同步問題。關於這個問題,gemfield在《從進 程到執行緒》中有一個比喻,有必要重新放在下面溫習下: ***************

Linux開發Qt開發QT 同時支援滑鼠和觸控式螢幕

現在 如果我要使用滑鼠 匯入環境變數 export QWS_MOUSE_PROTO=MouseMan:/dev/input/mice 使用觸控式螢幕,匯入環境變數 export QWS_MOUSE_PROTO=Tslib:/dev/input/touchscreen0 如果想同時兩個都支援   export

超解析度python影象空間的轉換 RGB--YCBCR

由於人眼對顏色不敏感,而對光亮通道更加敏感。因此在超解析度任務中,我們通常需要將RGB通道轉換為Ycbcr通道。在Python的程式碼實現中,我發現opencv的RGB轉Ycbcr的計算方式和Matlab的實現方式有些不同,而NTIRE的評估往往是在matlab平臺的。因此,這裡需要注意

Python開發Python資料分析環境的搭建

注:無論是任何一門語言,剛開始入門的時候,語言執行環境的搭建都是一件不輕鬆的事情。 Python的執行環境 要執行或寫Python程式碼,就需要Python的執行環境,主要的Python有以下三類: 原生態的Python:就是直接從Python的官網下載,然後安裝使

web開發docker的資料庫

注:自從開始使用docker,部署方面的事情就簡單多了。使用docker構建的資料庫容器不用直接安裝,開啟後就可以使用,也比以前方便很多。下面將一些要點記錄下來。 下面的例子使用以下環境: - 系統:CentOS Linux release 7.4.1708 - docker:Docker versio

JNI開發C++呼叫java函式的實現方法

本文的主要內容:C++中呼叫java類的成員函式和靜態成員函式 1,java程式碼 public class SNaviEngineManager { public void sendMe

python 爬蟲pythonurl連結編碼處理方法

一、問題描述 有些網址,會把中文編碼成gb2312格式,例如百度知道,美容這一詞,網址上面會編碼成: %C3%C0%C8%DD 那麼如何生成這種編碼呢? 二、解決方法 1、把要編碼的文字enc

Opencv影象在MFC顯示的幾方法

接觸opencv後,其強大的影象處理功能令人折服,但是當把處理過程做成軟體釋出的時候就需要將處理結果顯示給使用者看,而我常用的還是MFC。歸納了網上的幾種方式: 1:第一種方法比較優雅取巧。將opencv的視窗貼到MFC的圖片控制元件上去。 2:通過opencv已經丟掉的

Java基礎-多重For迴圈的跳出方式

先來小段Demo,自己跑一下就能看到效果了: public static void main(String[] args) { List<String> listA = new ArrayList<String>(); List<String> lis

C語言實現一個計算器(方式)

1.使用switch…case…語句實現 #define _CRT_SECURE_NO_DEPRECATE 1 #include <stdio.h> #include <stdlib.h> int add(int x, int y) {   &nb

POJ - 2533Longest Ordered Subsequence(四方法解決最長上升子序列 含二分優化版本)

題幹: Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 41944   Acc

DP疊放箱子問題(方法

題目描述 某港口有一批集裝箱,將其編號,分別為1至N。每一個箱子的外型尺寸都是一樣的,現在要將其中某些集裝箱疊放起來,集裝箱疊放的規則如下:   1)每個集裝箱上最多隻能直接疊放一個集裝箱。   2)編號較小的集裝箱不能放在編號較大的集裝箱之上。   3)每個集裝箱都給出了自身的重量和可

Linux自動獲取Ip的方法

       在安裝好Centos系統後,每次登陸上之後都需要通過手動方式進行網路連線,過於麻煩,因此改成自動連線的方式。                   &nb

biginteger。大數乘法。大數運算。“無限大數字”乘法。大數乘法方法對比

最近在看筆試題,得知大數運算是個經常考的題目。所以有興趣試了試。 一開始按照筆算方法自己寫了個,但是時間複雜度是o(n3)。 參考了網上的演算法之後,修改了自己的演算法,時間複雜度變成o(n2)。 下面的測試結果中,兩個2000位的數字(阿拉伯數字的位數)相乘,耗時90多

問題記錄VeeValidate配置中文的不同做法

舊版: "vee-validate": "^2.0.0-rc.13" 新版:"vee-validate": "^2.1.0-beta.7" 安裝最新版的VeeValidate之後對其進行中文化操作時, 之前老一套(2.0版)中文化的做法如下圖: 系統報錯提示 ad

Qt播放WAV格式音訊檔案的方法

        這兩種方法都需要在.pro檔案中加入multimedia模組。 方法一、使用QAudioOutput #include <QApplication> #include &