gpt4 book ai didi

c++ - cv::Mat 使用行数据填充新的 Mats 列

转载 作者:行者123 更新时间:2023-11-28 00:15:37 24 4
gpt4 key购买 nike

我有一个函数返回一个 opencv Mat,有 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;
}

关于c++ - cv::Mat 使用行数据填充新的 Mats 列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30524198/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com