Python에서 이미지를 회색조로 변환

Muhammad Waiz Khan 2023년1월30일
  1. pillow라이브러리의image.convert()메소드를 사용하여 Python에서 이미지를 그레이 스케일로 변환
  2. scikit-image모듈의color.rgb2gray()메서드를 사용하여 Python에서 이미지를 그레이 스케일로 변환
  3. OpenCV라이브러리의cv2.imread()메소드를 사용하여 Python에서 이미지를 그레이 스케일로 변환
  4. 변환 공식 및Matplotlib라이브러리를 사용하여 Python에서 이미지를 회색조로 변환
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()

관련 문장 - Python Image