背景:
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);