2012-07-05 15 views
17

tworzę obraz, tak:Jak przekonwertować obraz z np.uint16 do np.uint8?

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

Potem konwertować obraz do modelu BGR:

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

Chciałbym przekonwertować obraz teraz w dtype = np.uint8 w celu wykorzystania, które zdjęcie z funkcją cv2.threshold(). Chodzi mi o to, że chciałbym przekonwertować obraz na CV_8UC1.

Odpowiedz

22

Możesz użyć cv2.convertScaleAbs dla tego problemu. Zobacz Documentation.

Sprawdź komend terminala demo poniżej:

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

>>> cvuint8 = cv2.convertScaleAbs(image) 

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

Nadzieja to pomaga !!!

5

Proponuję użyć to:

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

ten wyświetli Uint8 obraz & wartość przypisać między 0-255 w stosunku do poprzedniej wartości tam między 0-65535

exemple : 
pixel with value == 65535 will output with value 255 
pixel with value == 1300 will output with value 5 etc... 
Powiązane problemy