Невозможно прочитать память MFC C ++ с openCV - PullRequest
0 голосов
/ 09 октября 2018

Я создал приложение MFC C ++ на компьютере под управлением Windows 7, используя Visual Studio 2017, и оно работает нормально.Но, когда я перенесу этот проект на свой домашний компьютер с Windows 10 с той же версией Visual Studio, я получаю сообщение об ошибке во время выполнения, которое, похоже, исходит из библиотеки openCV.Я отлаживал ошибку и считаю, что это конфликт между MFC и openCV.

Проблема начинается здесь.Объект инициализируется, но когда он загружает модель, он ломается.Я отладил объект facemark и обнаружил, что свойство cv :: Algorithm имеет значение «Unable to read memory», которое, как я полагаю, начинается там.

Ptr<Facemark> facemark = FacemarkLBF::create();
facemark->loadModel("lbfmodel.yaml");

facemark-> fit имеет триаргументы.Первым аргументом является изображение, которое представляет собой текущий передаваемый кадр, затем грани, которые являются просто прямоугольником, в котором были обнаружены грани, и ориентиры.Когда эта функция возвращает true, параметр landmarks не получает никаких данных, но когда я запускаю это на моем компьютере с Windows 7, он получает.Вот почему я считаю, что проблема начинается, когда я пытаюсь загрузить lbfmodel, потому что он не может загрузить модель правильно.

    std::vector< std::vector<cv::Point2f> > landmarks;
    std::vector<Rect> faces;
    faces.push_back(face.faceLocation());

    // Search for landmarks
    if ( facemark->fit(frame, faces, landmarks) )
    {
        // This function does not work anymore because landmarks is empty.
        face.map2DPointsTo3DPoints(landmarks);

Я четыре раза проверил, что все мои библиотеки связаны правильно, и дажеперестроить openCV с помощью cmake и снова связать все зависимости, но это ничего не дало.Я полагаю, что существует некоторый тип конфликта между MFC C ++ и openCV, но я не смог понять это.Буду признателен за любые отзывы или идеи по отладке этого.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...