Возникли проблемы с использованием 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 и VC 2010 Ultimate Edition. Все коды и dll находятся в 64-битных. Программа не выдает никаких ошибок при запуске из консоли VC. Но выдает ошибку, если запускается из MATLAB.

Мой вопрос: кто-нибудь сталкивался с такой проблемой с какой-либо из программ обнаружения функций в OpenCV? Если да, пожалуйста, помогите мне с этим.

2

Решение

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

0

Другие решения

Computer Vision System Toolbox теперь включает в себя пакет поддержки для взаимодействие с OpenCV.

0

По вопросам рекламы [email protected]