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

NOT*_*SLY 17 c++ opencv

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

Ela*_*782 28

尝试

Mat mat1row = mat1.row(0);
mat2.copyTo(mat1row);
Run Code Online (Sandbox Code Playgroud)

(假设mat2与目标行具有相同的大小).

这应该做的工作,更清楚.

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

A.row(j).copyTo(A.row(i));
Run Code Online (Sandbox Code Playgroud)

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


Rus*_*ear 9

尝试

destMat.row(i) = (sourceMat.row(i) + 0);
Run Code Online (Sandbox Code Playgroud)

这不是很漂亮,但它完成了工作.也看到这个.阅读关于Mat :: row的评论

  • 啊,它确实有效,因为使用"+ 0"可以将rhs从标题转换为表达式. (10认同)
  • 你彻底测试了吗?我不确定,但是根据我对OpenCV Mat的理解,我会说这只会改变一些Mat-header并且实际上不会复制数据. (2认同)