關於OPENCV中imwrite出錯的一種可能及解決方法
以前一直用IplImage結構做載體,現在逐步轉成Mat,結果在imread和imwrite上出現了一些異常
主要表現為imwrite時出現異常情況.
我的程式碼:
if (ext == "bmp")
{
imwrite(fileName.toStdString(), imageShowing);
}
else if (ext == "jpeg" | ext == "jpg")
{
std::vector<int> compression_params;
compression_params.push_back(CV_IMWRITE_JPEG_QUALITY);
compression_params.push_back(100);
imwrite(fileName.toStdString(), imageShowing, compression_params);
}
else if (ext == "png")
{
std::vector<int> compression_params;
compression_params.push_back(CV_IMWRITE_PNG_COMPRESSION);
compression_params.push_back(9);
Mat matc4;
matc4.create(imageShowing.size(), CV_8UC4);
cvtColor(imageShowing, matc4, CV_BGR2RGBA);
imwrite(fileName.toStdString(), matc4, compression_params);
matc4.release();
}
在DEBUG模式下,只能存為BMP格式,選擇JPG或PNG時,總是彈出異常
對了,這裡提到DEBUG模式,那是不是在RELEASE模式下就可以了呢?正確,除錯跟蹤了好久,根據以往經驗,看看RELEASE模式如何?在RELEASE模式下,以上幾種格式都行。那就是DEBUG和RELEASE的專案配置不一樣了。
解決方法:
針對DEBUG和RELEASE模式,分別設定LINK下的opencv LIB(我之前把opencv**d.lib和opencv**.lib全放在一起了),這裡改為DEBUG對應***d.lib,RELEASE對應**.lib
再次編譯,儲存,OK
這裡也只是表面上解決了問題,深層次原因沒有分析。