我有一個問題,我一直試圖找出幾天現在。我使用OpenCV從相機獲取幀,然後將其轉換爲QImage並嘗試將幀保存在磁盤上。我面臨的問題是,如果我編譯/運行Visual Studio中的釋放/調試模式下的代碼,那麼它工作正常。如果我運行visual studio創建的可執行文件進行調試模式,那麼它運行良好。但是,如果我運行可視化工作室在釋放模式下創建的可執行文件,gui的工作良好,除了QImage save()函數不再有效。如果我使用OpenCV功能來保存幀,那麼它在所有模式下都能正常工作。我試圖保存的QImage不爲空,因爲我的註釋文本框顯示內部打印的行,但保存函數返回false。我真的很感激幫助。問題與QT保存()函數爲QImage
這裏是一個小代碼:
規範的IplImage和QImage的之間的轉換(我也用另一種代碼,具有相同的結果)
QImage A::IplImage2QImage(const IplImage *iplImage)
{
int height = iplImage->height;
int width = iplImage->width;
if (iplImage->depth == IPL_DEPTH_8U && iplImage->nChannels == 3) {
const uchar *qImageBuffer = (const uchar*)iplImage->imageData;
QImage img(qImageBuffer, width, height, QImage::Format_RGB888);
return img.rgbSwapped();
}
else {
// qWarning() << "Image cannot be converted.";
return QImage();
}
}
void A::getFrame()
{
commentsTextBox->setText("getFrame");
if (VI.isFrameNew(device1)) {
VI.getPixels(device1, (unsigned char *)frame->imageData, false, true);
}
QImage qimg2 = IplImage2QImage(frame);
m_Label->setPixmap(QPixmap::fromImage(qimg2));
if (!qimg2.isNull()) {
x = qimg2.save("C:\\Data\\test.jpg");
commentsTextBox->append("notEmpty33");
}
}
請確保您有在釋放模式可支持JPG。你可以加載並保存一個JPG罰款? –
是的,這聽起來像是缺少jpg庫,並且正在悄然失敗。 –
你可以試試這個:http://stackoverflow.com/questions/7152597/qt-unable-to-save-jpeg-files/7160245#7160245。 – alexisdm