0

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

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

我尝试重塑,但没有奏效。我可以得到一些帮助如何更改矩阵大小。

谢谢

4

1 回答 1

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);
    }
}

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

于 2013-06-26T14:30:59.343 回答