【问题标题】:convert vector to mat in OpenCV在 OpenCV 中将向量转换为 mat
【发布时间】:2012-11-21 21:38:23
【问题描述】:

我正在使用 opencv 2.4.3 使用以下代码执行向量到矩阵的转换:

struct Component
{
    cv::Rect box;
    double area;
    double circularity; 
}

int main ( ... )
{
     cv::vector < Component > components;         
     cv::Mat componentMat ( components, true );
     std::cout << componentMat;
     return 0; 
}

但它给出了一个错误,说:

OpenCV Error: Unsupported format or combination of formats() in unknown function, file ...\opencv\modules\core\src\out.cpp, line 111

我在这里做错了什么?有没有其他方法可以将此向量转换为矩阵形式?谢谢你。

【问题讨论】:

  • 你能详细说明这个问题吗,为什么你需要做这个转换,你可以在opencv中创建一个矩阵并将其作为向量处理,如果这有帮助的话。但我认为您创建矩阵并希望将其转换为矩阵是有原因的。你能提供一个你需要的场景吗
  • 实际上我正在将它用于我的另一个功能,这已在我的问题中被消除。
  • 我在问这个问题,因为也许有办法解决这个问题,现在除了在这里回答之外我看不到其他方法,即将向量作为矩阵处理,在这种情况下将是 nx1矩阵。你能告诉我们哪个函数输出向量,哪个函数使用矩阵作为输入吗?

标签: c++ opencv vector matrix type-conversion


【解决方案1】:

您正在尝试创建“组件”类型的矩阵。它行不通。 Mat 仅支持特定的数据类型,如 Point2d、Point3d 等。如果您尝试使用它们,它应该可以工作。

【讨论】:

    【解决方案2】:

    the documentation 中有一个对 Mat 构造函数的引用,他们在其中说明了支持哪些类型的向量:

    "构造函数可以处理任意类型,其中有 正确声明的 DataType ,即 vector 元素必须是 原始数字或单类型数字元组混合型 当然,不支持结构。”

    所以不支持您使用的类型,因此您会收到错误。

    【讨论】:

      猜你喜欢
      • 2013-09-02
      • 2013-10-05
      • 2014-12-28
      • 1970-01-01
      • 2014-02-18
      • 2011-09-12
      • 1970-01-01
      • 2018-09-04
      相关资源
      最近更新 更多