Arrayの結果が非常に小さい値の行列であるとき以下のようなプログラムだと表示される画像とimage.pngとして保存される画像が異なります。
python
1 result = Array*255 2 cv2.imshow('image', result) 3 cv2.imwrite('image.png', result)
例えば画像の一部分を抽出すると(実際今使っている画像をそのまま貼ることができないので見づらくてすみません)imshowで表示される画像は白と黒がはっきりした画像が表示されるのですが、imwriteで保存された画像はグラデーションのようになりcv2.imshow('predict', Array)で表示される画像と変わらない画像が保存されてしまいます。
この理由と、imshowで表示されるような画像を保存する方法を教えていただけますでしょうか。
画像は uint8 型の配列ですが、Array*255 などとしているので、オーバーフローなどが起きているのではないでしょうか?
ありがとうございます。すみません、基礎的知識が少ないもので、よくわからなかったのですが、オーバーフローが起きているためimshowで示したときには白と黒でほぼ二値化のような画像が表示されたという解釈でよいのでしょうか?
result = Array*255 はどのような意図で入れたのでしょうか?
print(Array.dtype, result.dtype) とすると画像の型はどうなっていますか?
私でない別の方が作ったプログラムを私が編集している状態の為、その方に聞いてみないと本当の意図はわかりませんが画像で示したとき全体として非常に薄いグレーが多い画像のため少しでもグレーとして表示される部分を白くして見やすくるために入れたものと思われます。
print(Array.dtype, result.dtype) ではfloat32,float32と表示されました。
回答1件
あなたの回答
tips
プレビュー