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

19

Я создаю изображение так:

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 .

    
задан omar 05.07.2012 в 05:23
источник

2 ответа

25

Вы можете использовать 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 05.07.2012 в 17:04
источник
7

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

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

это приведет к отображению uint8 image & amp; присвойте значение между 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.02.2014 в 12:35
источник