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