Я пытаюсь использовать matplotlib
для чтения изображений RGB и преобразования их в оттенки серого.
В Matlab я использую это:
img = rgb2gray(imread('image.png'));
В уроке по matplotlib они не освещают это. Они просто читают на картинке
import matplotlib.image as mpimg
img = mpimg.imread('image.png')
и затем они нарезают массив, но это не то же самое, что преобразование RGB в оттенки серого из того, что я понимаю.
lum_img = img[:,:,0]
Мне трудно поверить, что numpy или matplotlib не имеют встроенной функции для преобразования из rgb в серый. Разве это не обычная операция при обработке изображений?
Я написал очень простую функцию, которая работает с изображением, импортированным с помощью imread
за 5 минут. Это ужасно неэффективно, но именно поэтому я надеялся на профессиональную реализацию встроенной.
Себастьян улучшил мою функцию, но я все еще надеюсь найти встроенную.
реализация Matlab (NTSC/PAL):
import numpy as np
def rgb2gray(rgb):
r, g, b = rgb[:,:,0], rgb[:,:,1], rgb[:,:,2]
gray = 0.2989 * r + 0.5870 * g + 0.1140 * b
return gray