Bus errorとSegmentation faultに困ったら見るブログ

物理の研究者による日々の研究生活のメモ書きです ( python/emacs/html/Japascript/シェルスクリプト/TeX/Mac/C言語/Linux/git/tmux/R/ポケモンGO)

【opencv2, python3】元々8bitの画像をunit16型で読み込んで画像をimwriteで保存すると真っ黒の画像になる

8bitの画像と16bitの画像を色々と比較したいので、8bitの方を無理に16bitとして読み込んでいる

img = np.uint16(img)

でできる

 

ただ、この変更した画像をunit16型のまま保存しようとしてるのが問題っぽい

(理由がよくわからんが)

 

画像のタイプは

print(img.dtype)

で確認できる

 

cv2.imwrite("hoge.png", img.astype(float))

とすることで解決

 

今までは画像を保存する時に

fig = plt.figure(figsize = (50, 50))
plt.imshow(img_overlay, 'gray')
plt.xticks(), plt.yticks()  # to hide tick values on X and Y axis
fig.savefig("img.png")
plt.close() 

としてたけど、この方法だと元の解像度通りには保存されない

 

 

今ちょっと困ってるのは、imshow("hoge", img)のようにしても画像をjupyter notebook上で表示できないこと・・・

しょうがないので↑のmatplotlibを使った方法で表示して内容確認はしてる