【问题标题】:OpenCV: Unknown Array Type error in Matrix.cppOpenCV:Matrix.cpp 中的未知数组类型错误
【发布时间】:2013-03-07 09:35:41
【问题描述】:

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

感谢您对此的帮助。

谢谢 周杰伦

【问题讨论】:

    标签: c# c++ opencv matrix emgucv


    【解决方案1】:

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

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

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

    【讨论】:

    • 非常感谢!这就是问题所在。行数应该是 1,而不是零。因此,矩阵中的两个数组之间存在不匹配。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-13
    • 2017-12-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多