Как мне преобразовать изображение float32 в изображение uint8? - PullRequest
0 голосов
/ 10 ноября 2018

Я хочу преобразовать float32 изображение в uint8 изображение в Python, используя библиотеку openCV. Я использовал следующий код, но я не знаю, является ли он правильным или нет.

Здесь I - это изображение float32.

J = I*255
J = J.astype(np.uint8)

Я действительно ценю, если вы можете мне помочь.

Ответы [ 2 ]

0 голосов
/ 05 июля 2019

это на самом деле очень просто. img_uint8 = img_float32.astype (np.uint8)

0 голосов
/ 10 ноября 2018

Если вы конвертируете ваше изображение из float32 в uint8 numpy и opencv в python, вы можете использовать два удобных подхода.

Если вы знаете, что ваше изображение имеет диапазон от 0 до 255 или от 0 до 1, тогда вы можете просто выполнить преобразование так, как вы это уже делаете:

I *= 255 # or any coefficient
I = I.astype(np.uint8)

Если вы не знаете диапазон, я предлагаю вам применить минимальную максимальную нормализацию т.е.: (value - min) / (max - min)

opencv уже реализовал:

I = cv2.normalize(I,None,0,255,cv2.NORM_MINMAX,cv2.CV_8U)

Возвращенный I уже будет иметь тип np.uint8 и диапазон от 0 до 255

Используя numpy, вы также можете написать что-то похожее:

def norm8(I):
  mn = I.min()
  mx = I.max()

  mx -= mn

  I = (I - mn)/mx
  return I.astype(np.uint8)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...