将一个矩阵块复制到 OPENCV 中的另一个矩阵块

Posted

技术标签:

【中文标题】将一个矩阵块复制到 OPENCV 中的另一个矩阵块【英文标题】:Copy a block of matrix in to another block of matrix in OPENCV 【发布时间】:2013-01-02 15:43:19 【问题描述】:

我有一个包含 $100x100$ 个元素的矩阵 A。我还有另一个包含 $50x50$ 个元素的矩阵 B..

我想将一个元素块复制到A,例如,

A(Range(10,30),Range(10,30))  = B (Range(5,25),Range(5,25));

程序正在编译和执行,但值没有被复制。有什么解决办法吗?

【问题讨论】:

真的吗? A 和 B 是对象,那代码可以编译吗? @LuchianGrigore 是的,它正在编译 那不是你的代码。要么,要么 A 和 B 不是对象。 无论如何.. 我的主要目的是将一个矩阵的特定范围的行和列复制到另一个矩阵。我该怎么做? @LuchianGrigore... 实际上提问者没有显示完整的代码。从代码看,AB 似乎是cv::Mat 类的对象。 【参考方案1】:

试试

cv::Mat A;
cv::Mat B;
cv::Mat C = A(cv::Range(10,30),cv::Range(10,30));
B (cv::Range(5,25),cv::Range(5,25)).copyTo(C);

我想在您的代码中发生的情况是您对 A 的函数调用返回一个 Mat 标头,然后将其设置为等于 B 返回的 Mat 标头。默认情况下,OpenCV 不会复制 cv::Mat 数据,您必须明确地做到这一点。

【讨论】:

@RavindraGadde 很高兴听到这个消息!如果您在本网站上找到有用的答案,如果是您自己的问题,您可以通过接受表示感谢(按复选标记),或者如果其他人提出问题(您需要 15 位代表才能做到这一点),请点赞。

以上是关于将一个矩阵块复制到 OPENCV 中的另一个矩阵块的主要内容,如果未能解决你的问题,请参考以下文章

将矩阵中的列向量复制到opencv中另一个矩阵的每个列中

块输出的 MPI 矩阵

MPI 块矩阵乘法

OpenCV 中的高效矩阵复制

OpenCV——识别手写体数字

将矩阵扩展为块矩阵 - 索引问题