イメージとカーネルの間に何らかの畳み込みをしようとしているので、私の結果は本当に巨大ではありません。カーネルを0と1の間の範囲に正規化しようとしています予め。私はCV_32FC1で働いています。Mat types &私の画像はグレースケールです。OpenCV Matを分割すると予期せぬ結果になる
私のカーネルは-1から1の範囲で始まります。最小値を引いて0から2の範囲をとり、最大値で除算して、理論的には0から1の範囲にする必要があります。しかし、この分割後、値の範囲は(私はこれらの数字を丸めている - 実際の正確な値が役に立つなら、私に知らせてください。)358に0となり
これは私のコードです:
double minVal; double maxVal;
minMaxLoc(kernel, &minVal, &maxVal);
kernel = kernel - minVal;
minMaxLoc(kernel, &minVal, &maxVal);
divide(maxVal, kernel, kernel);
これはどうして起こっているのですか?多分私はメモリやオーバーフローの問題に陥っているように感じるかもしれませんが、私の値はすべて32Fが格納できる範囲内にあると思います。修正は素晴らしいだろうが、なぜ私が最も興味を持っているのか。
overflowsは、通常、saturate_castを使用するためopenCV操作では発生しません。あなたは 'std :: cout << minVal << std :: endl;'、 'std :: cout << maxVal << std :: endl;'と 'std :: cout << kernel << std :: endl ;あなたの操作の前後に? – Micka
@chrisMaesの回答が正しいはずです。 – Micka