将一个矩阵块复制到 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... 实际上提问者没有显示完整的代码。从代码看,A
和B
似乎是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 中的另一个矩阵块的主要内容,如果未能解决你的问题,请参考以下文章