在QT中用QLabel顯示一張影象及QImage/QPixmap/QBitmap/QPicture
阿新 • • 發佈:2019-01-10
在QT中顯示影象,是使用OpenCV聯合QT進行機器視覺專案的開發的第一步。首先需要弄清楚的是QT的四個影象類QImage/QPixmap/QBitmap/QPicture。
QPixmap是專門為繪圖而生,當需要繪製圖片時候需要使用QPixmap。為它是儲存在伺服器端,往QPixmap上繪圖比較慢,但顯示它則比較快。但在Windows平臺上則是是一樣的,因為它們都儲存在客戶端。
QImage為I/O,為圖片畫素訪問及修改而設計的,如果你想訪問圖片的畫素或者修改圖片的畫素,則需要使用QImage,或者藉助於QPainter來操作畫素。在X11, Mac 以及 Symbian平臺上,QImage: 因為它是儲存在客戶端,往QImage上繪圖比較快,但顯示它則比較慢。
QBitmap只是一個繼承於QPixmap的簡單類,它可以確保圖片深度為1。
QPicture是一個繪畫裝置類,它記錄了並可以重演QPainter的命令。你可以使用QPainter的begin()方法,指定在QPicture上繪圖,使用end()方法結束繪圖,使用QPicture的save()方法將QPainter所使用過的繪圖指令存至檔案。
方法一:
方法二:void Dialog::on_ButtonPic_clicked() { QPixmap img; img.load("C:/Users/SLJ/Desktop/12.bmp"); ui->labelPic->clear(); ui->labelPic->setPixmap(img); }
void Dialog::on_ButtonPic_clicked()
{
QImage image;
image.load("C:/Users/SLJ/Desktop/12.bmp");
ui->labelPic->clear();
ui->labelPic->setPixmap(QPixmap::fromImage(image));
}
顯示效果如下圖所示: