Почему назначенные значения RGB меняются автоматически? - PullRequest
0 голосов
/ 10 июня 2018

Сначала рассмотрим этот код:

from PIL import Image

im = Image.open("best_tt.jpg")
im2 = Image.new("RGB", im.size, (255,255,255))

b = 200

for i in range(im.size[0]):
    for j in range(im.size[1]):
        rgb = im.getpixel((i,j))
        if rgb[0] <= b and rgb[1] <= b and rgb[2] <= b:
            im2.putpixel((i,j), (0,0,0))
        else:
            im2.putpixel((i,j), (0, rgb[1], rgb[2]))

im2.save("tmp.jpg")

Я просто удаляю компонент RED из каждого пикселя (кроме черных пикселей: if оператор проверяет пиксели, которые выглядят черными) .Другими словами, я конвертирую данное изображение в желтую шкалу (так как G + B = Y).

Таким образом, каждый пиксель должен иметь значение RGB, например (0, G, B).

Однако некоторые пиксели нового изображения возвращают значения, такие как:

  • (1, 255, 203)
  • (3, 205, 243)
  • (16, 242, 47)

, хотя некоторые имели красныйкомпонент как 0.

Что вызывает произвольную настройку значений RGB?

1 Ответ

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

Функция save() определит тип в формате jpeg, качество сжатия по умолчанию которого равно 75. Способ кодирования и сжатия файла может в конечном итоге изменить значения после факта.

См.Документация PIL для save() ниже: https://pillow.readthedocs.io/en/3.1.x/handbook/image-file-formats.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...