c++ - OpenCV - 直接将矩阵乘法结果复制到另一个矩阵的子集

标签 c++ opencv matrix subset memory-efficient

我尝试直接将矩阵乘法结果复制到另一个矩阵的子集:

cv::Mat a,b,c;
//fill matrices a and b and set matrix c to correct size
cv::Mat ab=a*b;
ab.copyTo(c(cv::Rect(0,0,3,3)));

是否可以直接将结果复制到矩阵 c,例如(我知道这行不通):

(a*b).copyTo(c(cv::Rect(0,0,3,3)));
//or 
c(cv::Rect(0,0,3,3)).setTo(a*b);

这样不是更有效率吗?

最佳答案

试试这个:

cv::Mat subC = c(cv::Rect(0,0,3,3));
subC = a*b;

此处禁止复制。

或者更简洁:

c(cv::Rect(0,0,3,3)) = a*b;

关于c++ - OpenCV - 直接将矩阵乘法结果复制到另一个矩阵的子集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19291203/

相关文章:

opencv - 旋转人脸检测

c++ - 使用 Cython 和 distutilis 方法从 Python 调用 C++ 代码

r - 如何将数据帧(或向量)转换为矩阵以将 R 基线包用于除提供的示例数据之外的数据?

java - 在 if 语句中比较太多变量

MATLAB - 如何声明一个 "row slots"的矩阵供我插入行?

c++ - 为什么默认构造函数在某些情况下默认不可用

c++ - 将 Boost Spirit 解析器从 boost::variant 转换为 std::variant

python - 在 Raspberry Pi 终端上使用 Python 中的 OpenCV 显示图像

c++ - 生成错误 Makefile.win FLTK

c++ - 运行终端程序时阻止终端输入