0

我正在使用 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.dll 中出现“Emgu.CV.Util.CvException”类型的未处理异常附加信息:OpenCV:未知数组类型

这与 CV_32FC1 数据类型有关吗?我的 OpenCV 到 EmguCV 的转换是否正确?

感谢您对此的帮助。

谢谢杰

4

1 回答 1

1

CV_32FC1 仅表示单通道、32 位浮点数组,并且由于您不能有零通道,因此默认的 Matrix 构造函数应该没问题。

您是否尝试在“添加”调用上设置断点并检查这两个矩阵?我不确定 EmguCV 何时抛出该异常,但矩阵大小可能不匹配。

另外,我刚刚注意到“描述符”对象的构造函数有 0 行;这是一个错字吗?

于 2013-03-07T01:35:41.820 回答