2013-05-31 122 views
0

我有如下定義標籤:包括圖像成標籤

QLabel* label_min; 
label_min = new QLabel(this); 
label_min->setGeometry(QRect(10, 20, 640, 480)); 

我也有一份簡歷::墊形象:

cv::Mat Mat_dst; 

我沒有找到一種方法將該圖像包含在上面的標籤中。

有沒有辦法做到這一點?

回答

1

我想你應該首先將cv :: Mat轉換爲QImage(這看起來並不平凡),然後將該QImage轉換爲QPixmap並使用setPixmap函數。正如我所說的,將cv :: Mat圖像轉換爲QImage並不是微不足道的。它取決於你的圖像類型(RGB或單色或...)以及cv :: Mat對象的生命週期,如果將cv :: Mat圖像深層複製到QImage對您來說代價昂貴。

cv::Mat cvImg; // your opencv image 
QImage img = OpenCV2Qt(cvImg); // Implementation of this function depends on cvImage 
label->setPixmap(QPixmap::fromImage(img)); 

對於CV ::墊轉換爲QImage的對象,因爲關於供給圖像的類型沒有詳細信息,我相信這是最好看的計算器以下職位:

how to convert an opencv cv::Mat to qimage

cv::Mat to QImage conversion

一記最後一件事是,如果你使用的是RGB圖像,OpenCV的存儲在RGB爲了他們在BGR訂單數據,但Qt的專賣店;所以你必須調用cvtColor(mat,rgb,CV_BGR2RGB)或qimg.rgbSwapped()。