背景:
measurement_count++;
for (int r = 0; r < img.rows; ++r){
for (int c = 0; c < img.cols; ++c){
float new_val = static_cast<float>(img.at<unsigned short>(r,c));
sum.at<float>(r,c) += new_val; 或者 sum.at<float>(r,c) = sum.at<float>(r,c) + new_val;
mean.at<float>(r,c) = new_sum/float(measurement_count);
}
}
sum.at<float>(r,c) += new_val; 或者 sum.at<float>(r,c) = sum.at<float>(r,c) + new_val;
问题:
例如你在row=1时候,这样算出来的sum是对的。
但在row=2 ~ N时, sum.at<float>(r,c) 的值在row=1就被改变了,这样算出来的sum是不对的。
例如,sum初始为0的矩阵,在row=2的时候, sum.at<float>(r,c) 还没被遍历就有数值了。。。。
原因:
原因不明。。。
解决办法:
用新建的矩阵赋值,例如sum_tmp.at<float>(r,c) = sum.at<float>(r,c) + new_val;
然后, sum_tmp.copyTo(sum);