在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()调用来获得它。
我错过了什么?