Python 이 RGB 그림 을 Pytho 그 레이스 케 일 그림 으로 변환 하 는 실례

질문:
나 는 matplotlib 를 사용 하여 RGB 그림 을 읽 고 그 레이스 케 일 로 변환 하려 고 시도 하고 있다.
matlab 에서 이 걸 사용 합 니 다:

img = rgb2gray(imread('image.png')); 
matplotlib tutorial에서 그들 은 그것 을 덮 지 않 았 다.그들 은 단지 그림 에서 읽 을 뿐이다.

import matplotlib.image as mpimg
img = mpimg.imread('image.png') 
그런 후에 그들 은 배열 을 자 르 지만 이것 은 내 가 알 고 있 는 RGB 를 그 레이스 케 일 로 바 꾸 는 것 이 아니다.

lum_img = img[:,:,0] 
편집:
나 는 numpy 나 matplotlib 가 rgb 에서 회색 으로 내 장 된 함수 가 없다 는 것 을 믿 기 어렵 다 는 것 을 발견 했다.이것 은 이미지 처리 에서 흔히 볼 수 있 는 조작 이 아 닙 니까?
나 는 5 분 안에 imread 가 져 온 그림 을 사용 할 수 있 는 매우 간단 한 함 수 를 썼 다.이것 은 매우 비효 율 적 인 것 이지 만,이것 이 바로 내 장 된 전문 적 인 실 시 를 원 하 는 이유 이다.
세 바스 티 안 은 나의 기능 을 개선 시 켰 지만,나 는 여전히 내 장 된 하 나 를 찾 고 싶다.
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
대답:
어떻게 사용 합 니까PIL

from PIL import Image
img = Image.open('image.png').convert('LA')
img.save('greyscale.png') 
matplotlib 와the formula사용 하기

Y' = 0.299 R + 0.587 G + 0.114 B 
너 는 이렇게 할 수 있다.

import numpy as np
import matplotlib.pyplot as plt
import matplotlib.image as mpimg
 
def rgb2gray(rgb):
 return np.dot(rgb[...,:3], [0.299, 0.587, 0.114])
 
img = mpimg.imread('image.png') 
gray = rgb2gray(img) 
plt.imshow(gray, cmap = plt.get_cmap('gray'))
plt.show()
이 파 이 썬 이 RGB 이미 지 를 파 이 썬 그 레이스 케 일 이미지 로 변환 한 실례 는 여러분 에 게 공 유 된 모든 내용 입 니 다.참고 해 주시 고 많은 응원 부 탁 드 리 겠 습 니 다.

좋은 웹페이지 즐겨찾기