Python PIL вручную конвертировать 16-битный TIF в 8-битный JPG - PullRequest
0 голосов
/ 31 мая 2018

У меня есть база данных 16-битных изображений в градациях серого, чьи пиксели располагаются приблизительно от 768 до 1280 (очень темные).Я хочу вытянуть данные из значения экстремума и сохранить результат в 8-битном формате JPG.

from PIL import Image
image = Image.open(inp_16bits)
image.mode = 'I'
mi, ma = image.getextrema()
ratio = 256.0 / (ma - mi)
mapping = lambda i: (i-mi) * ratio
image.point(mapping).convert('L').save(out_8bits)

Моя функция отображения работает, но не работает в качестве параметра для точки, мой код возвращает

"Ошибка типа: неподдерживаемые типы операндов для -: '_E' и 'int'".

Как правильно реализовать мою функцию, чтобы она работала с изображением.point?или есть простой способ создать таблицу поиска из моего отображения функций?

1 Ответ

0 голосов
/ 01 июня 2018

Просматривая конструктор объектов _E, я нашел __add__ и __mul__ методы.

lambda i: (i.__add__(-mi)).__mul__(ratio)# doesnt work but 
lambda i: (i * ratio).__add__(-mi*ratio)# works

Первый возвращает

ValueError: недопустимое выражение.

Я не хотел с этим бороться, поэтому я попробовал другой способ реализации своей операции, и, наконец, второй сработал.

...