Как преобразовать изображение из np.uint16 в np.uint8?
Я создаю изображение так:
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
.
Ответы
Ответ 1
Вы можете использовать cv2.convertScaleAbs
для этой проблемы. См. Документацию .
Проверьте демонстрацию командной строки ниже:
>>> img = np.empty((100,100,1),dtype = np.uint16)
>>> image = cv2.cvtColor(img,cv2.COLOR_GRAY2BGR)
>>> cvuint8 = cv2.convertScaleAbs(image)
>>> cvuint8.dtype
dtype('uint8')
Надеюсь, это поможет!!!
Ответ 2
Я предлагаю вам использовать это:
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...