首页 > 解决方案 > 在Opencv中将向量添加到矩阵

问题描述

我有一个这样的问题,例如:我有一个向量 =

[1, 2, 3]

我有一个矩阵=

[1, 2, 3]
[4, 5, 6]
[7, 8, 9]

预期结果是:

[1+1, 2+2, 3+3]
[4+1, 5+2, 6+3]
[7+1, 8+2, 9+3]

它是“将向量(或行)添加到矩阵”。

有API或方便的方法吗?ps:我正在用 C++ 编写代码。

标签: opencvmatrixvector

解决方案


您不能将向量添加到矩阵中。您可以添加矩阵和标量或矩阵和矩阵。要执行您想要的操作,您可以将行矩阵添加到 3x3 矩阵的每一行:

unsigned char values[9] = { 1,2,3,4,5,6,7,8,9 };
cv::Mat matrix(3,3,CV_8UC1, values);
unsigned char rowval[3] = { 1,2,3 };
cv::Mat rowmat(1,3,CV_8UC1, rowval);

std::cout << "input:\n";
std::cout << matrix << "\n";
std::cout << "rowmat:\n";
std::cout << rowmat << "\n";

for(int i=0;i<3;i++)
  matrix.row(i) += rowmat;

std::cout << "result:\n";
std::cout << matrix << "\n";

哪个输出:

input:
[  1,   2,   3;
   4,   5,   6;
   7,   8,   9]
rowmat:
[  1,   2,   3]
result:
[  2,   4,   6;
   5,   7,   9;
   8,  10,  12]

推荐阅读