Как преобразовать изображение из 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.

20 голосов | спросил omar 5 J000000Thursday12 2012, 07:23:36

2 ответа


0

Вы можете использовать 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')

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

ответил Abid Rahman K 5 J000000Thursday12 2012, 19:04:44
0

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

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...
ответил afiah 14 FebruaryEurope/MoscowbFri, 14 Feb 2014 15:35:18 +0400000000pmFri, 14 Feb 2014 15:35:18 +040014 2014, 15:35:18

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132