とか、など

プログラミングとか、画像処理とか、機械学習を勉強しようとして挫折中

matplotlibのimshowは勝手に正規化する話

matplotlibを使ってopencvのチュートリをやってた時の話

ret, thresh = cv2.threshold(img, 127, 255, cv2.THRESH_TRUNC)

#閾値を超えるものは255にするそれ以外はそのまま

として

plt.imshow(thresh, 'gray')

 

すると、画像がほぼほぼ真っ白になる。

TRUNCされmax 127になるはずなのに、おかしい

と思って調べると解決。

python - imshow(img, cmap=cm.gray) shows a white for 128 value - Stack Overflow

 

plt.imshow(thresh, 'gray', vmin = 0, vmax = 255) 

するべきだったのです。vmin, とvmaxを指定しないと勝手に8bitに正規化されてしまうので注意という話。ちゃんと調べてから使えよというね。

あと、ついでにこんなことも分かった。

irphan view使うときも補間切らないと、勝手に補間されてたけどmatplotlibも勝手に補間しちゃうので不要なときは切りましょう

pylabのimshowをMatlabのようにカクカクなピクセルで表示: YATTSUKE BLOG

 

ちなみにthreshのチュートリは書き直しました。

 

github.com