cv::Mat 使用行数据填充新的 Mats 列
cv::Mat use row data to fill a new Mats columns
我有一个函数,其中 returns 一个 opencv 垫,有 4 行和 1 列。它在 for 循环中运行,迭代 2 到 100 次。
我需要的是将返回的列复制到一个新的 Mat 中,这样每次迭代都会添加一个新列。
我有(伪):
cv::Mat ResultMat(4, 1, CV_64F);
Mat returnMat(4, 1, CV_64F);
for (int i = 0; i < iterations; i++)
{
returnMat= (function that returns a 4x1 Mat);
returnMat.col(0).copyTo(ResultMat.col(0));
}
效果很好,但每次都会覆盖 Resultmat 列。
将最后一行替换为
returnMat.col(0).copyTo(ResultMat.col(i));
导致异常错误。
编辑:如果我将 ResultMat 创建为 'Resultmat(4, 100, CV_64F)',它可以工作,但我需要它来自行调整列数...
如何向 ResultMat 动态添加列,每个循环一个?
不确定为什么当您更改 ResultMat 的大小时它对您不起作用。但这里有一个解决方案,假设您知道迭代次数,这基本上是最终结果中的列数。
我定义了一个函数func()来演示循环内部调用的函数。
Mat func() {
Mat m(4, 1, CV_64F);
randn(m, 0., 1.); // fill with random values.
return m;
}
int main() {
int iterations = 3;
cv::Mat result(4, iterations, CV_64F);
for (int i = 0; i < iterations; i++) {
Mat m = func();
m.col(0).copyTo(result.col(i));
}
return 0;
}
我有一个函数,其中 returns 一个 opencv 垫,有 4 行和 1 列。它在 for 循环中运行,迭代 2 到 100 次。
我需要的是将返回的列复制到一个新的 Mat 中,这样每次迭代都会添加一个新列。
我有(伪):
cv::Mat ResultMat(4, 1, CV_64F);
Mat returnMat(4, 1, CV_64F);
for (int i = 0; i < iterations; i++)
{
returnMat= (function that returns a 4x1 Mat);
returnMat.col(0).copyTo(ResultMat.col(0));
}
效果很好,但每次都会覆盖 Resultmat 列。
将最后一行替换为
returnMat.col(0).copyTo(ResultMat.col(i));
导致异常错误。
编辑:如果我将 ResultMat 创建为 'Resultmat(4, 100, CV_64F)',它可以工作,但我需要它来自行调整列数...
如何向 ResultMat 动态添加列,每个循环一个?
不确定为什么当您更改 ResultMat 的大小时它对您不起作用。但这里有一个解决方案,假设您知道迭代次数,这基本上是最终结果中的列数。 我定义了一个函数func()来演示循环内部调用的函数。
Mat func() {
Mat m(4, 1, CV_64F);
randn(m, 0., 1.); // fill with random values.
return m;
}
int main() {
int iterations = 3;
cv::Mat result(4, iterations, CV_64F);
for (int i = 0; i < iterations; i++) {
Mat m = func();
m.col(0).copyTo(result.col(i));
}
return 0;
}