嗨,我是OpenCV的初學者。我想通過子矩陣逐步改變我的矩陣。但像素值沒有變化。輸出像素值與輸入像素值相同。此外,我的「wavenoise」功能非常有效。OpenCV通過子矩陣改變矩陣
這是我的代碼;
cv::Mat wave_trans = Mat::zeros(nr, nc, CV_64FC1);
for (int i = 0; i < L; i++){
Range Hhigh = Range(nc/2, nc-1);
Range Hlow = Range(0, nc/2 - 1);
Range Vhigh = Range(nr/2, nr-1);
Range Vlow = Range(0, nr/2 - 1);
Mat wave_trans_temp1 = Mat(wave_trans, Vlow, Hhigh);
wave_trans_temp1 = wavenoise(wave_trans_temp1, NoiseVar);
Mat wave_trans_temp2 = Mat(wave_trans, Vhigh, Hlow);
wave_trans_temp2 = wavenoise(wave_trans_temp2, NoiseVar);
Mat wave_trans_temp3 = Mat(wave_trans, Vhigh, Hhigh);
wave_trans_temp3 = wavenoise(wave_trans_temp3, NoiseVar);
nc = nc/2;
nr = nr/2;
}
我希望你能幫助我。對不起我的英語不好。
此致敬禮。
這個問題可能是在重新分配矩陣你'wavenoise'功能(這將是有益的,以顯示它)。然後分配結果,將'wave_trans_temp *'變量指向新數據。相反,對'wavenoise'函數的結果使用'copyTo'將值複製到子矩陣中。你需要記住'cv :: Mat'就像一個智能指針 - 賦值只是改變對象的引用,但不會導致數據的深層拷貝。 –