在OpenCV中将矢量转换为mat

时间:2012-12-04 09:42:32

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

我使用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

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

2 个答案:

答案 0 :(得分:16)

the documentation中有一个对Mat构造函数的引用,在该构造函数中,它们表示支持哪种类型的向量:

  

“构造函数可以处理任意类型   正确声明的DataType,即向量元素必须是   原始数字或单数字数字元组。 <强>混合型   当然不支持结构。“

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

答案 1 :(得分:3)

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