OpenCV:Matrix.cpp中的未知数组类型错误

时间:2013-03-07 00:34:10

标签: c# c++ opencv matrix emgucv

我正在使用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的转换是否正确?

感谢你的帮助。

由于 杰

1 个答案:

答案 0 :(得分:1)

CV_32FC1只是一个单通道,32位浮点数组,由于你不能有零通道,默认的Matrix构造函数应该没问题。

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

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