코딩. 캠핑

OpenCV Python 입문(2) - Matplotlib 라이브러리 본문

Dev(개발)/OpenCV(Python)

OpenCV Python 입문(2) - Matplotlib 라이브러리

진영_8 2021. 1. 26. 17:42

이번 과제 목표는 Matplotlib 사용하여 영상 출력하기이다.

Matplotlib 라이브러리

 - 함수 그래프, 차트, 히스토그램 등의 다양한 그리기 기능을 제공하는 파이썬 패키지이다.

우선 설치를 해야 하니 명령 프롬프트 창을 하나 열어서 아래 문장을 쳐주자.

pip install matplotlib

Matplotlib 라이브러리는 컬러 영상의 색상 정보가 RGB순서로 출력하는데, OpenCV의 imread() 함수는 BGR순서로 색상을 불러온다. 따라서 Red와 Blue의 색상 정보가 반전이 되어서 출력이 된다. 

그래서 cv2.cvtColor() 함수를 이용해서 BGR순서를 RGB순서로 변환을 해야 한다.

import matplotlib.pyplot as plt
import cv2


# 컬러 영상 출력
imgBGR = cv2.imread('cat.bmp')
imgRGB = cv2.cvtColor(imgBGR, cv2.COLOR_BGR2RGB)        # BGR to RGB

plt.axis('off')         # x축, y축 눈금 비활성화
plt.imshow(imgRGB)
plt.show()

먼저 앞서 말했던 문제를 확인하기 위해imgBGR을 까 보겠다.

plt.imshow(imgBGR)

Red, Blue가 반전되어서 이쁜 고양이가 퍼렇게 변해버렸다. 이제 다시 이쁜 고양이를 불러오자.

plt.imshow(imgRGB)

 

cvtColor을 통해서 Red와 Blue를 반전시켜주니 다시 이쁜 고양이로 돌아왔다.

 

# 그레이스케일 영상 출력
imgGray = cv2.imread('cat.bmp', cv2.IMREAD_GRAYSCALE)

plt.axis('off')
plt.imshow(imgGray, cmap='gray')
plt.show()

그레이 스케일 영상 출력이다. 그레이 스케일은 2차원 행렬 형태로 저장되고, 밝기 값 256단계만 저장된다.

# 두 개의 영상을 함께 출력
plt.subplot(121), plt.axis('off'), plt.imshow(imgRGB)
plt.subplot(122), plt.axis('off'), plt.imshow(imgGray, cmap='gray')
plt.show()

이 코드는 창 하나에 두 개의 영상을 출력하는 것이다.

subplot의 값 "121"는 1행에 2열로 나눠서 1번째 열에다가 진행하라는 뜻이다.
"122"는 1행에 2열로 나눠서 2번째 열에다가 진행하라는 뜻이다.

 컬러 영상은 1행 1열에, 그레이 스케일 영상은 1행 2열에 만들어진 걸 확인할 수 있다.

Matplotlib는 주피터 노트북 환경에서도 쓸 수 있다고 하니 그게 편하면 거기서 쓰면 되겠다.

Comments