OpenCV: неизвестная ошибка типа массива в Matrix.cpp

Я использую метод EmguCV Matrix.Add для добавления одной матрицы в другую.

Emgu.CV.Matrix<float> descriptors = new Emgu.CV.Matrix<float>(0, dictionarySize);
Emgu.CV.Matrix<float> BOWDescriptor = imageDescriptorExtractor.Compute(trainingImage, keyPoints);
descriptors.Add(BOWDescriptor);

Соответствующий код OpenCV приведен ниже:

Mat bowDescriptor(0, dictionarySize, CV_32FC1);
Mat bowDescriptor;
bowDE.compute(img, keypoints, bowDescriptor);
descriptors.push_back(bowDescriptor);

Во время компиляции я не получу никаких исключений. Но при запуске приложения я получаю следующую ошибку:

Произошло необработанное исключение типа ‘Emgu.CV.Util.CvException’ в Emgu.CV.dll Дополнительная информация: OpenCV: неизвестный тип массива

Это как-то связано с типом данных CV_32FC1? Правильно ли конвертирован мой OpenCV в EmguCV?

Ценю вашу помощь по этому вопросу.

Спасибо
сойка

0

Решение

CV_32FC1 означает только один канал, 32-битный массив с плавающей запятой, и, поскольку у вас не может быть нулевых каналов, конструктор Matrix по умолчанию должен быть в порядке.

Вы пытались поставить точку останова на вызове «Добавить» и проверить две матрицы? Я не уверен, когда EmguCV выдает это исключение, но, возможно, существует несоответствие размеров матрицы.

Кроме того, я только что заметил, что ваш конструктор для объекта «дескрипторы» имеет 0 строк; это была опечатка?

1

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

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector