我想将 openCV 级联添加到 QT 的资源管理中。但是我失败了。
我已经测试了这段代码:
// load cascades
QUrl *location_cascade= new QUrl("qrc:/cascades/haarcascade_frontalface_alt.xml");
std::string file=location_cascade->toString().toStdString();
CvHaarClassifierCascade* cascade = (CvHaarClassifierCascade*)cvLoad( file);
但是编译器说:
cannot convert 'std::string* {aka std::basic_string<char>*}' to 'const char*' for argument '1' to 'void* cvLoad(const char*, CvMemStorage*, const char*, const char**)'
有人有想法吗?
更新 目前该文件位于项目的源文件夹中。我可以通过相对路径访问这个文件吗?也许通过一个指向 src.dir 的常量?
问候
最佳答案
编译器告诉您 cvLoad
的第一个参数应该是 const char*
,但您传递的是 std::string
。您需要像 cvLoad(file.c_str())
那样调用它。
但即使您设法编译了该代码,它也可能无法运行,因为 openCV 对 Qt 资源一无所知,并且无法打开具有该名称的文件。
关于c++ - 从 QT 资源加载 openCV Haar Cascade,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16099442/