每列opencv的总和

spa*_*ace 11 opencv

在Matlab中,如果A是矩阵,则sum(A)将A的列视为向量,返回每列总和的行向量.

总和(图像); 如何用OpenCV完成?

Sri*_*har 32

使用cvReduce对我有用.例如,如果您需要将矩阵的逐列和存储为行矩阵,则可以执行以下操作:

CvMat * MyMat = cvCreateMat(height, width, CV_64FC1);
// Fill in MyMat with some data...

CvMat * ColSum = cvCreateMat(1, MyMat->width, CV_64FC1);
cvReduce(MyMat, ColSum, 0, CV_REDUCE_SUM);
Run Code Online (Sandbox Code Playgroud)

OpenCV文档中提供了更多信息.

  • 我更喜欢这个解决方案 (2认同)

Sea*_*ean 0

对于 8 位灰度图像,以下应该有效(我认为)。扩展到不同的图像类型应该不会太难。

int imgStep = image->widthStep;
uchar* imageData = (uchar*)image->imageData;
uint result[image->width];
memset(result, 0, sizeof(uchar) * image->width);
for (int col = 0; col < image->width; col++) {
  for (int row = 0; row < image->height; row++) {
    result[col] += imageData[row * imgStep + col];
  }
}

// your desired vector is in result
Run Code Online (Sandbox Code Playgroud)