Opencv矩阵行和列

时间:2013-06-26 11:09:53

标签: opencv

我有一个用于训练SVM大小(1 x 5)的标签矩阵.5个标签用于5个图像。

现在,问题在于,具有训练数据的数据矩阵的大小(1 x 65000)。事实上,这个矩阵的大小必须是(5 x 13000);这是13000行的5列(图像)。

我尝试重塑但它没有用。我可以帮助您了解如何更改矩阵大小。

谢谢

1 个答案:

答案 0 :(得分:1)

这里最简单的方法是创建一个新矩阵并一次复制一个元素。我不确定你的矩阵的结构是什么,但是让我们说第一个训练样例对应于你目前在错误形状矩阵的1-5条中所拥有的内容。

cv::Mat training_data = new cv::Mat(13000, 5, CV_32F);
for (unsigned int row = 0; row < training_data.rows; ++row)
{
    for (unsigned int col = 0; col < training_data.cols; ++col)
    {
        training_data.at<float>(row, col) = old_training_data.at<float>(1, (training_data.cols * row) + col);
    }
}

然后发布旧的训练数据矩阵,你就有了一个全新的(形状正确!)矩阵。