1. 程式人生 > >在QT中用QLabel顯示一張影象及QImage/QPixmap/QBitmap/QPicture

在QT中用QLabel顯示一張影象及QImage/QPixmap/QBitmap/QPicture

       在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));
}
顯示效果如下圖所示: