OpenCV 비전 실무2장 · 이미지 입출력과 영상 시각화8 / 21← 이전목차다음 →MetaContents

2장. 이미지 입출력과 영상 시각화

화면에 띄우는 두 길

사진을 보여 주는 방법은 두 가지가 있습니다. 하나는 사진 한 장을 액자에 넣어 벽에 거는 것입니다. 손님이 보고 "다 봤다"고 말할 때까지 걸어 둡니다. 다른 하나는 앨범에 여러 장을 붙이고 사진마다 설명을 적는 것입니다. 앨범은 그대로 복사해 다른 사람에게 줄 수도 있습니다. OpenCV 의 cv2.imshow 가 액자, Matplotlib 이 앨범입니다.

새 창을 띄우는 cv2.imshow 와 노트북·그림 파일에 바로 보이는 Matplotlib 을 나란히 놓은 비교 그림

그림의 왼쪽은 새 창을 띄우는 cv2.imshow, 오른쪽은 Matplotlib 입니다. 여기서 액자를 걸어 두는 시간이 cv2.waitKey 이고, 앨범의 설명이 Matplotlib 의 제목입니다. 이 과정은 오른쪽 길을 씁니다. VS Code 의 노트북이나 원격 환경에서는 새 창이 뜨지 않을 수 있고, 여러 장과 제목을 한 그림에 담기도 Matplotlib 이 쉽기 때문입니다.

cv2.imshow 의 생김새

아래는 실행하지 않은 안내 코드입니다. 창을 띄우는 코드라 교안의 자동 실행에는 넣지 않았습니다. 내 PC 의 VS Code 에서 파이썬 파일로 실행하면 창이 뜹니다.

출력
import cv2

img = cv2.imread("ch02_market.png")
cv2.imshow("market", img)    # imshow = image show. "market" 이라는 이름의 창에 그림을 띄운다
key = cv2.waitKey(0)         # 키를 누를 때까지 기다린다. 0 = 끝없이. 1000 이면 1초(밀리초 단위)
print("누른 키 번호:", key)
cv2.destroyAllWindows()      # 띄운 창을 모두 닫는다

두 길 견주기

견줄 것cv2.imshowMatplotlib (plt.imshow)
색 순서BGR 그대로 넣는다RGB 로 바꿔 넣는다
보이는 곳새 창노트북 칸, 그림 창, 그림 파일
기다리기cv2.waitKey 가 꼭 있어야 한다필요 없다
여러 장, 제목, 눈금창을 여러 개 띄워야 한다한 도화지에 칸을 나눠 넣는다
쓰는 때웹캠처럼 계속 바뀌는 화면 (15장)처리 전후 견주기, 보고서 그림
Python
import cv2
import matplotlib.pyplot as plt

img = cv2.imread("ch02_market.png")
# Matplotlib 은 RGB 순서로 읽으므로 바꿔서 넣는다
plt.imshow(cv2.cvtColor(img, cv2.COLOR_BGR2RGB))
plt.title("장터 진열대")
plt.axis("off")
plt.show()

주의할 점

  • cv2.imshow 뒤에 cv2.waitKey 가 없으면 창이 그려지지 않거나 곧바로 닫힙니다.
  • cv2.imshow 에는 BGR 그림을 그대로 넣습니다. RGB 로 바꿔 넣으면 거꾸로 빨강과 파랑이 뒤바뀝니다.
← 이전 절2장 · 저장하기와 저장 옵션다음 절 →2장 · Matplotlib 의 짜임