python how Как преобразовать изображение из np.uint16 в np.uint8?




python opencv shape (2)

Я создаю образ так:

image = np.empty(shape=(height, width, 1), dtype = np.uint16)

После этого я конвертирую изображение в модель BGR:

image = cv2.cvtColor(image, cv2.COLOR_GRAY2BGR)

Я хотел бы сейчас преобразовать изображение в dtype = np.uint8 , чтобы использовать это изображение с cv2.threshold() . Я имел в виду, я хотел бы преобразовать изображение в CV_8UC1 .


Вы можете использовать cv2.convertScaleAbs для этой проблемы. Смотрите Documentation.

Посмотрите демонстрационный пример командного терминала ниже:

>>> img = np.empty((100,100,1),dtype = np.uint16)
>>> image = cv2.cvtColor(img,cv2.COLOR_GRAY2BGR)

>>> cvuint8 = cv2.convertScaleAbs(image)

>>> cvuint8.dtype
dtype('uint8')

Надеюсь, поможет!!!


Я предлагаю вам использовать это:

outputImg8U = cv2.convertScaleAbs(inputImg16U, alpha=(255.0/65535.0))

это выведет изображение uint8 и присвоит значение в диапазоне 0-255 относительно предыдущего значения в диапазоне 0-65535

exemple :
pixel with value == 65535 will output with value 255 
pixel with value == 1300 will output with value 5 etc...




numpy