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 분 안에 가져온 이미지로 작동하는 매우 간단한 기능을 작성했습니다 . 끔찍하게 비효율적이지만 전문 구현이 내장되어 있기를 바랐습니다.
Sebastian은 내 기능을 개선했지만 여전히 내장 기능을 찾고 있습니다.
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
gray = np.mean(rgb, -1)
잘 작동합니다. 감사. 이것을 사용하지 않는 이유가 있습니까? 대신 아래 답변에서 솔루션을 사용하는 이유는 무엇입니까?
np.mean(rgb, -1)
.
0.2989 * R + 0.5870 * G + 0.1140 * B
나는 그것이 표준 방법이라고 가정하고 있습니다.
gray = np.mean(rgb, -1)
. 어쩌면rgb[...,:3]
실제로 RGBA가있는 경우.