1. 程式人生 > >關於OPENCV中imwrite出錯的一種可能及解決方法

關於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

這裡也只是表面上解決了問題,深層次原因沒有分析。