Я использую метод 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?
Ценю вашу помощь по этому вопросу.
Спасибо
сойка
CV_32FC1 означает только один канал, 32-битный массив с плавающей запятой, и, поскольку у вас не может быть нулевых каналов, конструктор Matrix по умолчанию должен быть в порядке.
Вы пытались поставить точку останова на вызове «Добавить» и проверить две матрицы? Я не уверен, когда EmguCV выдает это исключение, но, возможно, существует несоответствие размеров матрицы.
Кроме того, я только что заметил, что ваш конструктор для объекта «дескрипторы» имеет 0 строк; это была опечатка?
Других решений пока нет …