我有这个代码:
vector<Mat> brg;
Mat output;
split(inputImage, brg);
double mb=mean(brg[0])[0];
double mg=mean(brg[1])[0];
double mr=mean(brg[2])[0];
cout << "mb "<< mb<< " mg "<< mg<< " mr "<< mr << endl;
double max=MAX(mb,MAX(mg,mr));
mb=max/mb;
mg=max/mg;
mr=max/mr;
brg[0]=brg[0] *mb;
brg[1]=brg[1] *mg;
brg[2]=brg[2] *mr;
{
double mb=mean(brg[0])[0];
double mg=mean(brg[1])[0];
double mr=mean(brg[2])[0];
cout << "mb "<< mb<< " mg "<< mg<< " mr "<< mr << endl;
}
merge(brg,output);
return output;
从数学的角度来看,如果我将一个矩阵乘以一个数字,那么它的平均值应该乘以那个数字,所以我应该在这个函数的末尾得到相同的 mb、mg、mr,但我没有得到。我得到的结果如下:
mb 166.891 mg 176.319 mr 158.288
mb 169.619 mg 176.319 mr 164.149
可以看出,均值发生了变化,但它们不相等,但它们都应该等于最大值。
我没有得到这个的任何理由?
我该如何解决?