在OpenCV中将向量转换为矩阵

10

我正在使用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中创建一个矩阵并将其处理为向量。但我想你创建矩阵并想将其转换为矩阵肯定是有原因的。你能提供一个场景来解释一下你需要这样做的原因吗? - Moataz Elmasry
实际上我是在另一个函数中使用它,但这个函数在我的问题中已经被排除了。 - E_learner
我问这个问题是因为可能有其他方法,目前除了在这里回答之外,我看不到其他的方法,即将一个向量处理成一个矩阵,而在这种情况下,它将是一个nx1的矩阵。你能告诉我们哪个函数输出向量,哪个函数使用矩阵作为输入吗? - Moataz Elmasry
2个回答

16
文档中提到了Mat构造函数支持哪些类型的向量:

"该构造函数可以处理任意类型,只要有正确声明的DataType,即向量元素必须是原始数字或数字元组的统一类型。当然,不支持混合类型结构。"

因此,你所使用的类型不被支持,因此会出现错误。


3

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接