こんにちは私は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'はスマートなポインタのように振る舞い、オブジェクトが何を参照するのかだけを変更するだけで、データの完全コピーは生じません。 –