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のチュートリは書き直しました。