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);
你可以在这里 这里下载完整的代码。