qt: 打不開png圖像以及opencv加載中文路徑問題;


經過親測, QT(版本: 5.9.4)提供的QImageReader或者函數load在加載本地png圖像時,均會提示失敗, 按照網上的方法,將Qt plugins下的imageformats

拷貝到exe路徑下,也不行。

如果是png圖像, 可以通過opencv進行加載,然后將Mat轉換為QImage。

但是有一個問題, 當路徑為中文路徑時, opencv無法加載,需要將中文進行轉碼:

(以下是我收錄的兩種實現opencv加載中文路徑的png圖像)

1.、

        cv::Mat  srcImg;
        QFile file(“D:/測試.png");
        if( file.open(QIODevice::ReadOnly))
        {
            QByteArray byteArr = file.readAll();
            std::vector<char> data(byteArr.data(), byteArr.data() +byteArr.size());
            srcImg = cv::imdecode(cv::Mat(data),1);
            file.close();
        }else
            return;  

2、

QString strPath = “D:/測試.png";
std::string path = strPath.toLocal8Bit().toStdString();
cv::Mat image = cv::imread(path,1 ); 

 注: 當代碼中包含:

    QTextCodec* codec =QTextCodec::codecForName("utf8");
    QTextCodec::setCodecForLocale(codec);

 如果將編碼方式設置為隨本地系統,那么這種轉碼可能不行.

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM