在Opencv中将向量添加到矩阵

在Opencv中将向量添加到矩阵,opencv,matrix,vector,Opencv,Matrix,Vector,我有一个这样的问题,例如: 我有一个向量= [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++中编码。 < p>你不能向矩阵添加向量。 可以添加矩阵和标量,也可以添加矩阵和矩阵。 要执行所需操作,可以将行矩阵添加到3x3矩阵的每一行: unsigned char

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

[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++中编码。

< p>你不能向矩阵添加向量。 可以添加矩阵和标量,也可以添加矩阵和矩阵。 要执行所需操作,可以将行矩阵添加到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";

现在有一种直接的方法可以做到这一点。我能想到的两种方法是:mat加法和后续col加法

垫子添加:

cv::Mat a = (cv::Mat_<uchar>(3, 3) << 1, 2, 3, 4, 5, 6, 7, 8, 9);
cv::Mat b = (cv::Mat_<uchar>(3, 3) << 1, 2, 3, 1, 2, 3, 1, 2, 3);
cv::Mat r = a + b;
std::vector s{1,2,3};
for (int col = 0; col < a.cols; ++col)
{
   a.col(col) += s[col];
}
cv::Mat a=(cv::Mat_u3)
std::vector s{1,2,3};
for (int col = 0; col < a.cols; ++col)
{
   a.col(col) += s[col];
}