OpenCV - чтение 16-битного изображения в оттенках серого

Я пытаюсь прочитать 16-битное изображение в оттенках серого с использованием OpenCV 2.4 в Python, но, похоже, загружает его как 8 бит.

Я делаю:

im = cv2.imread(path,0)
print im

[[25 25 28 ...,  0  0  0]
[ 0  0  0 ...,  0  0  0]
[ 0  0  0 ...,  0  0  0]
..., 

Как получить его как 16 бит?

Ответ 1

Догадаться. Если кто-то столкнется с этой проблемой:

im = cv2.imread(path,-1)

Установка флага в 0, для загрузки в градациях серого по умолчанию кажется 8-битной. Установка на -1 загружает изображение как есть.

Ответ 2

Чтобы улучшить читаемость, используйте флаг cv2.IMREAD_ANYDEPTH

image = cv2.imread( path, cv2.IMREAD_ANYDEPTH )

Ответ 3

У меня была такая же проблема (16-разрядная загрузка .tif как 8-бит с использованием cv2.imread). Однако использование флага -1 не помогло. Вместо этого я смог загрузить 16-битные изображения, используя пакет tifffile.