Преобразование RGB-изображения в оттенки серого и управление пиксельными данными в python

У меня есть RGB-изображение, которое я хочу преобразовать в изображение в оттенках серого, так что у меня может быть одно число (может быть от 0 до 1) для каждого пикселя. Это дает мне матрицу, которая имеет размеры, равные размерам пикселей изображения. Затем я хочу сделать некоторые манипуляции на этой матрице и сгенерировать новое изображение в оттенках серого из этой управляемой матрицы. Как я могу это сделать?

  • Передача фигуры matplotlib в HTML (колбу)
  • Получить координаты локальных максимумов в 2D-массиве выше определенного значения
  • Раскрасить изображение, сохраняя прозрачность с помощью PIL?
  • Python Tkinter 2.7 Проблема с изображением.
  • Ошибка при рисовании QImage на виджет с PIL и PyQt
  • Как показать изображения PIL на экране?
  • Команда Virtualenv не найдена
  • Переупорядочение матричных элементов для отражения кластеризации столбцов и строк в naiive python
  • зависимость аргумента argparse
  • Как разбить абзац предложениями в Python
  • TensorFlow для двоичной классификации
  • Есть ли что-то быстрее, чем dict ()?
  • One Solution collect form web for “Преобразование RGB-изображения в оттенки серого и управление пиксельными данными в python”

    Я часто работаю с изображениями как массивы NumPy – я делаю это так:

     import numpy as np from PIL import Image x=Image.open('im1.jpg','r') x=x.convert('L') #makes it greyscale y=np.asarray(x.getdata(),dtype=np.float64).reshape((x.size[1],x.size[0])) <manipulate matrix y...> y=np.asarray(y,dtype=np.uint8) #if values still in range 0-255! w=Image.fromarray(y,mode='L') w.save('out.jpg') 

    Если после манипуляций значения массива y не превышают 0-255, вы можете увеличить до 16 бит TIFF или просто перемасштабировать.

    -Aldo

    Python - лучший язык программирования в мире.