0

QT のリソース管理に openCV カスケードを追加したいと考えています。しかし、私は失敗しました。

私はこのコードをテストしました:

// 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を指す定数によって?

挨拶

4

3 に答える 3

1

それでも、この質問は 2 年前のものです。使用した回避策を共有したいと思います。

QString sPath = QCoreApplication::applicationDirPath().append("/frontalface.xml")
QFile::copy(":/android-sources/OpenCV/haarcascade_frontalface_default.xml" , sPath);
cv::CascadeClassifier faceCascade = cv::CascadeClassifier(sPath.toStdString());
QFile::remove(sPath);

動作しますが、ローカルのハードドライブを迂回する必要があります。Android アプリケーションにはまだ有用です。

于 2016-02-25T14:44:06.640 に答える