Возникли проблемы с использованием OpenCV Vector и MATLAB

Я пытаюсь использовать детектор функций в 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? Если да, пожалуйста, помогите мне с этим.


person user1842493    schedule 21.11.2012    source источник


Ответы (2)


Не бери в голову. Я нашел решение. По умолчанию компилятор MEX имеет SECURE_SCL как 0 в mexopts.bat. Продолжай в том-же духе. Возьмите коды выпуска OpenCV (или перекомпилируйте отладку, используя SECURE_SCL = 0). Я действительно просмотрел сообщения, связанные с этим. Но большинство из них говорят вам установить флаг = 1, что не подавляет ошибки.

person user1842493    schedule 23.11.2012
comment
просто для ясности, вы переопределили флаг _SECURE_SCL как 1 в mexopts.bat? кстати, это также было проблемой с библиотекой mexopencv (см. файл README) - person Amro; 30.11.2012

Набор инструментов системы компьютерного зрения теперь включает пакет поддержки для взаимодействия с OpenCV.

person Dima    schedule 26.11.2014