OpenCV reduce()数组到向量平均值

时间:2018-05-03 19:24:40

标签: c++ opencv image-processing opencv3.0

在C ++中使用OpenCV 3.4.1我有一个2维Mat数组对象。前几行只是解释了如何获取数据以填充此Mat对象(" dat")

<form id="myForm">
  <input name="Data" /><br />
    <input name="Hora" /><br />
      <input name="Sala" /><br />
        <input name="Edifício" /><br />
</form>

然后从原始数据创建Mat对象如下所示:

int rows=NUMBER_OF_ROWS;
int cols=NUMBER_OF_COLS;
float* rawdata;
rawdata = new float[rows*cols];
fits_read_img(FP, TFLOAT, firstpixel, npixels, &nullval, rawdata, &anynull, &status);

到目前为止,这么好,我已经使用了这个Mat对象&#34; dat&#34;很多事情。但现在我想创建一个行的平均数据。这应该给我一个行x 1向量,每行的每一列都减少为一个值,即该行中所有值的平均值。像这样:

所以OpenCV有一个reduce()函数。以下是我尝试过的方法:

cv::Mat dat = cv::Mat(rows, cols, CV_32FC1, rawdata);

哪些段错误。如果我走向另一个方向,I.E。

std::vector<float> vec(rows);
cv::reduce(dat, vec, 1, cv::REDUCE_AVG, CV_32FC1);

然后我得到一个包含列平均值的1 x cols向量。事实上,它给了我完全相同的东西:

cv::reduce(dat, vec, 0, cv::REDUCE_AVG, CV_32FC1);

所以我当然可以使用像这样的暴力方法来获得我想要的行平均值,但似乎我应该能够通过单个cv :: reduce()调用来获得它。

我错过了什么?

0 个答案:

没有答案