gpt4 book ai didi

c++ - 如何使用opencv Mat reserve?与推回

转载 作者:太空狗 更新时间:2023-10-29 21:37:35 25 4
gpt4 key购买 nike

我想使用 opencv cv::Mat 函数 push_back 向矩阵添加新行,但我想预缓存矩阵的大小,以便数据不需要经常重新分配。 cv::mat::reserve 函数有多个行参数,但这意味着您必须指定列数(首先是数据大小)。所以我假设下面的代码会在开头给我一个我不想要的空行。是否有使用 reservepush_back 的正确方法来做到这一点??

cv::Mat M(1, size_cols, CV_32FC1);
M.reserve(size_rows);
for (int i = 0; i < size_rows; i++)
{
GetInputMatrix(A);
M.push_back(A.row(i));
}

注意:虽然示例代码没有显示,但我不确定最终矩阵的确切大小,但我可以获得一个最大值大小来保留。

最佳答案

一开始使用空垫子就可以了。列号和类型将通过第一个 push_back 确定。

cv::Mat M;  // empty mat in the beginning
M.reserve(size_rows);
for (int i = 0; i < size_rows; i++) {
GetInputMatrix(A);
M.push_back(A.row(i));
}

关于c++ - 如何使用opencv Mat reserve?与推回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37190312/

25 4 0