でOpenCVのでmat2grayを実装:私は彼と同じ問題を抱えてScaling a matrix in OpenCV私は彼と同じ問題が持っているのPython
を、私は色の絵を持って、私は絵読み取るためにMATLABを使用:Input = imread('input1.jpg');
を、とのフォーマット画像は、私は以下のように画像に5x5x1画素を612x612x3 UINT8印刷されている:Input(1:5,1:5,1)
201 201 201 201 201
201 201 201 201 201
202 202 202 202 202
203 203 203 203 203
204 204 204 204 204
mat2gray機能使用して:rgb_out = mat2gray(Input);
を、これらのピクセルは、それら全てが0と1の間の範囲で、これに変換することができます。 :rgb_out(1:5,1:5,1)
0.9684 0.9455 0.9266 0.9099 0.9047
0.9657 0.9542 0.9432 0.9354 0.9299
0.9642 0.9571 0.9502 0.9495 0.9456
0.9621 0.9609 0.9562 0.9532 0.9516
0.9673 0.9633 0.9597 0.9580 0.9575
ので質問はどのように私は、PythonとOpenCVの中でこれを実装することが可能ですが、私は以下のようにコードを試してみました:
print(Input)
rgb_out = np.zeros(Input.shape, np.uint8)
cv2.normalize(Input,rgb_out,1,0,cv2.NORM_MINMAX)
print(rgb_out)
が、最初の印刷は次のとおりです。
[[[205 207 201]
[205 207 201]
[205 207 201]
...,
[232 254 242]
[232 254 242]
[231 253 241]]...
と要素rgb_outは1または0以上ではありません。よろしくお願い致します。
ありがとう、本当に助けてください – Chris
それは間違っています。 255で除算する必要があります。元画像に0と255の両方の値があるので、正規化がこの場合に働くのは単なる運に過ぎません。 – Miki
@Miki彼はMATLABで 'mat2gray'の動作をシミュレートしたいと思っています。 'mat2gray'は255で除算するのではなく、入力の最大値にかかわらず0から1になるように入力のすべての値を拡大/縮小します。 – Suever