16bitモノクロ画像の輝度値の最小が3802、最大が11113とする。
import numpy as np import cv2 src= cv2.imread("input.tif",-1) src=np.add(src, -3802) src=src*(255/(11113-3802)) dst = src.astype(np.uint8) cv2.imwrite("output.png",dst)
注意点:
imread
の引数を0 又は 1にすると、8bit モノクロ画像 又は 8bit カラー画像として読み込まれてしまう。-1だと画像のbit深度、チャンネル数は変更されない。
C++版だとcv::convertTo
関数だが、python版だと型変換は numpyのastype(np.uint8)
で行う。