Opencv加载qt资源文件中的图片

Posted by Walk in the cloud on November 23, 2018

QT程序可以把图片文件打包到资源文件中,但是OpenCV的imread函数需要一个绝对路径,所以OpenCV不可以直接用imread函数打开QT资源文件中的图片。不过OpenCV提供了imdecode函数,该函数可以打开Buffer中的图片。所以我们就可以先把QT资源文件中的图片先读到Buffer中,然后再用imdecode函数加载。

    QFile file("://res/test.jpg");
    if(!file.open(QFile::ReadOnly))
    {
        qWarning() << "Open file failed!";
        return -1;
    }

    QByteArray ba = file.readAll();
    Mat image = imdecode(vector<char>(ba.begin(), ba.end()), CV_LOAD_IMAGE_COLOR);
    imshow("OpenCV", image);

你可以在这里 这里下载完整的代码。