OpenCV/C++:将 Mat 中的行/列复制到另一个?

Posted

技术标签:

【中文标题】OpenCV/C++:将 Mat 中的行/列复制到另一个?【英文标题】:OpenCV/C++: Copying a row/column in a Mat to another? 【发布时间】:2011-07-12 20:37:56 【问题描述】:

我知道我可以通过自己复制每个元素来做到这一点,但是有没有一种方法可以为我做到这一点?我试过mat2.copyTo(mat1.row(0)) 但这不起作用。

【问题讨论】:

【参考方案1】:

试试

Mat mat1row = mat1.row(0);
mat2.copyTo(mat1row);

(假设 mat2 与目标行的大小相同)。

这应该可以完成工作并且更清晰。

编辑:这更短,官方文档推荐:

A.row(j).copyTo(A.row(i));

官方文档中有更多详细信息:http://docs.opencv.org/modules/core/doc/basic_structures.html#Mat%20Mat%3a%3arow%28int%20y%29%20const

【讨论】:

【参考方案2】:

试试

destMat.row(i) = (sourceMat.row(i) + 0);

它不是很漂亮,但它完成了工作。另见 this。阅读 Mat::row 上的 cmets

【讨论】:

您对此进行了彻底的测试吗?我不确定,但根据我对 OpenCV Mat 的理解,我会说这只会改变一些 Mat-headers 而不会真正复制数据。 啊,它确实有效,因为使用“+ 0”可以将 rhs 从一个标题变成一个表达式。

以上是关于OpenCV/C++:将 Mat 中的行/列复制到另一个?的主要内容,如果未能解决你的问题,请参考以下文章

将同一列的行复制到 Pandas Dataframe 中的不同索引。将一个月的数据复制到另一个

为啥将 cv::Mat 的一列复制到向量中失败?

Pandas:使用 apply 将特定列中的行值复制到新列中

将数据从电子表格中的列复制到另一个电子表格中的行

将变量复制到mat到matlab中

如何将一个点附加到opencv c中的另一个点