Python에서 이미지를 회색조로 변환
-
pillow
라이브러리의image.convert()
메소드를 사용하여 Python에서 이미지를 그레이 스케일로 변환 -
scikit-image
모듈의color.rgb2gray()
메서드를 사용하여 Python에서 이미지를 그레이 스케일로 변환 -
OpenCV
라이브러리의cv2.imread()
메소드를 사용하여 Python에서 이미지를 그레이 스케일로 변환 -
변환 공식 및
Matplotlib
라이브러리를 사용하여 Python에서 이미지를 회색조로 변환
이 튜토리얼은 Python에서 이미지를 그레이 스케일로 변환하는 다양한 방법을 설명합니다. 그레이 스케일 이미지는 단일 픽셀이 빛의 양을 나타내거나 빛의 강도 정보 만 포함하는 이미지입니다. 단일 차원 이미지이며 회색 음영 만 다릅니다.
그레이 스케일 이미지는 1 차원이므로 다양한 문제와 캐니 에지 감지와 같은 알고리즘에서 모델의 훈련 복잡성을 줄이는 데 사용됩니다.
이 기사에서는 Python 모듈의 다양한 방법을 사용하여 이미지를 회색조로 변환하거나 Python에서 이미지를 회색조로 읽는 방법을 살펴 봅니다.
pillow
라이브러리의image.convert()
메소드를 사용하여 Python에서 이미지를 그레이 스케일로 변환
image.convert(mode, ..)
메소드는 이미지를 입력으로 받아mode
인수에 지정된 원하는 이미지 유형으로 변환합니다. 이 모드에는 1 비트 및 8 비트 픽셀 흑백 이미지,RGB
이미지,HSV
이미지,BGR
이미지 및LAB
이미지 등이 포함됩니다.
이미지를 그레이 스케일로 변환하려는 경우 1 비트 흑백 모드의 경우 모드 인수로1
, 8 비트 흑백 이미지의 경우L
, 알파 모드의 경우LA
를 전달할 수 있습니다. 아래 예제 코드는pillow
라이브러리의image.convert()
메서드를 사용하여 Python에서 이미지를 회색조로 변환하는 방법을 보여줍니다.
from PIL import Image
img = Image.open("test.jpg")
imgGray = img.convert("L")
imgGray.save("test_gray.jpg")
원본 이미지:
변환된 그레이스케일 이미지:
scikit-image
모듈의color.rgb2gray()
메서드를 사용하여 Python에서 이미지를 그레이 스케일로 변환
color.rgb2gray()
는 RGB 형식의 이미지를 입력으로 가져와 입력 이미지의 회색조 사본을 반환합니다. 아래 코드 예제는scikit-image
모듈의color.rgb2gray()
메소드를 사용하여 Python에서 회색조 이미지를 가져 오는 방법을 보여줍니다.
from skimage import color
from skimage import io
img = io.imread("test.jpg")
imgGray = color.rgb2gray(img)
OpenCV
라이브러리의cv2.imread()
메소드를 사용하여 Python에서 이미지를 그레이 스케일로 변환
그레이 스케일로 이미지를 얻는 또 다른 방법은 그레이 스케일 모드에서 직접 이미지를 읽는 것입니다.OpenCV
라이브러리의cv2.imread(path, flag)
메소드를 사용하여 그레이 스케일로 이미지를 읽을 수 있습니다.
cv2.imread()
메소드의flag
값이 1이라고 가정합니다.이 경우 알파 채널을 제외한 이미지를 읽고0
이면 이미지를 회색조로 읽습니다. -1
메소드는 알파 채널 정보를 포함한 이미지를 읽습니다.
따라서flag
인수 값을1
로 전달하여imread()
메소드를 사용하여 주어진 경로에서 이미지를 그레이 스케일로 읽을 수 있습니다.
아래 예제 코드는cv2.imread()
메서드를 사용하여 Python에서 회색조로 이미지를 읽는 방법을 보여줍니다.
import cv2
imgGray = cv2.imread("test.jpg", 0)
변환 공식 및Matplotlib
라이브러리를 사용하여 Python에서 이미지를 회색조로 변환
또한imgGray = 0.2989 * R + 0.5870 * G + 0.1140 * B
인 표준 RGB를 회색조로 변환하는 공식을 사용하여 이미지를 회색조로 변환 할 수 있습니다.
Python에서Matplotlib
라이브러리를 사용하여이 메서드를 구현할 수 있습니다. 먼저mpimg.imread()
메서드를 사용하여 이미지를 읽은 다음 행렬을 얻은 후 RGB 이미지의 빨강, 파랑 및 녹색 차원 행렬을 가져와야합니다. 회색조 이미지를 얻기 위해 공식을 적용 할 수 있습니다. 회색조 이미지를 얻으려면 전체 행렬에 공식에 주어진 값을 곱해야합니다.
아래 코드 예제는Matplotlib
라이브러리를 사용하여 Python에서 RGB- 그레이 스케일 변환 공식을 구현하는 방법을 보여줍니다.
from matplotlib import pyplot as plt
import matplotlib.image as mpimg
img = mpimg.imread("test.jpg")
R, G, B = img[:, :, 0], img[:, :, 1], img[:, :, 2]
imgGray = 0.2989 * R + 0.5870 * G + 0.1140 * B
plt.imshow(imgGray, cmap="gray")
plt.show()