Я пытаюсь использовать детектор функций в OpenCV в MATLAB. Для этого я создаю файл MEX, который вызывает некоторые другие функции в других файлах CPP. Эти функции реализуют необходимую процедуру для вызова детектора функций OpenCV. Все хорошо до создания файла MEX. Он может даже запускать обычные процедуры OpenCV из MATLAB. Но когда я просто использую детектор функций, он выдает мне ошибку - НЕСОВМЕСТИМОСТЬ ВЕКТОРНЫХ ИТЕРАТОРОВ. Пожалуйста, найдите необходимую информацию ниже -
Файл 1 — FeatureDetectorMEX.cpp -> Этот файл содержит функцию MEX, которая вызывает детектор признаков из FeatureDetetor.cpp. Файл 2 — FeatureDetector.cpp -> Этот файл содержит детектор признаков FAST. Затем он вызывает экстрактор признаков BRIEF, чтобы получить некоторые дескрипторы признаков для ключевых точек. Вот код -
Keypoints sourceKp;
Descriptors sourceDesc;
cv::FastFeatureDetector *detector = new cv::FastFeatureDetector(50);
cv::BriefDescriptorExtractor *extractor = new cv::BriefDescriptorExtractor();
//The following line generates the error
detector->detect(img.clone(),sourceKp);
if(!sourceKp.empty())
{
extractor->compute(img.clone(),sourceKp,sourceDesc);
}
Здесь img — это структура данных изображения типа cv::Mat. Keypoints — это вектор — std::vector Keypoints. Дескрипторы также cv::Mat.
FastFeatureDetector — это класс, реализующий детектор функций FAST. BriefDescriptorExtractor — это класс, реализующий Brief.
Вот подробности ошибки -
Debug Assertion Failed!
Program: C:\Program Files\MATLAB\R2010b\bin\win64\MATLAB.exe
File: C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\Vector
Line: 238
Выражение: векторные итераторы несовместимы
Вот еще немного информации: Моя система 64-битная. Я использую MATLAB R2010b и Ultimate Edition VC 2010. Все коды и библиотеки 64-битные. Программа не выдает никаких ошибок при запуске из консоли VC. Но выдает ошибку при запуске из MATLAB.
Мой вопрос: кто-нибудь сталкивался с такой проблемой с любой из программ обнаружения функций в OpenCV? Если да, пожалуйста, помогите мне с этим.