我正在使用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的转换是否正确?
感谢你的帮助。
由于 杰
答案 0 :(得分:1)
CV_32FC1只是一个单通道,32位浮点数组,由于你不能有零通道,默认的Matrix构造函数应该没问题。
您是否尝试在“添加”调用上设置断点并检查两个矩阵?我不确定EmguCV什么时候抛出异常,但也许矩阵大小不匹配。
另外,我刚注意到“descriptors”对象的构造函数有0行;这是一个错字吗?