
opencv-python 패키지의 imshow() 함수를 이용해 이미지를 하나 이상의 화면(윈도우)에 출력해 본다.
아래의 예제 코드 실행을 위해 관련된 이미지가 다음의 경로에 존재함을 전제로 한다.

예제 코드 1
<코드 1>
# python 3.9.6
# opencv-python 4.5.3.56
import cv2 as cv
img1 = cv.imread('image/view1.jpg', flags=cv.IMREAD_UNCHANGED)
img2 = cv.imread('image/view1.jpg', flags=cv.IMREAD_GRAYSCALE)
img3 = cv.imread('image/view2.jpg', flags=cv.IMREAD_UNCHANGED)
img4 = cv.imread('image/view2.jpg', flags=cv.IMREAD_GRAYSCALE)
img5 = cv.imread('image/food1.jpg', flags=cv.IMREAD_UNCHANGED)
img6 = cv.imread('image/food1.jpg', flags=cv.IMREAD_GRAYSCALE)
cv.imshow('image 1', img1)
cv.imshow('image 2', img2)
cv.imshow('image 3', img3)
cv.imshow('image 4', img4)
cv.imshow('image 5', img5)
cv.imshow('image 6', img6)
while True:
key = cv.waitKey()
print('key pressed :', int(key))
if key == 49: # 1
cv.destroyWindow('image 1')
elif key == 50: # 2
cv.destroyWindow('image 2')
elif key == 51: # 3
cv.destroyWindow('image 3')
elif key == 52: # 4
cv.destroyWindow('image 4')
elif key == 53: # 5
cv.destroyWindow('image 5')
elif key == 54: # 6
cv.destroyWindow('image 6')
elif key == 27 or key < 0: # ESC or all closed
break
cv.destroyAllWindows()

<코드 1>을 실행하면 6개의 이미지가 화면에 출력되고 키보드 입력이 발생할 때까지 대기한다.
key = cv.waitKey()
키보드에서 1번 키를 누르면 화면(윈도우) 이름이 'image 1'인 화면을 닫는다.
if key == 49: # 1
cv.destroyWindow('image 1')
출력된 모든 화면이 닫히면 cv.waitKey() 함수의 반환값은 -1이기에 아래의 코드로 while 문을 벗어나도록 한다.
elif key == 27 or key < 0: # ESC or all closed
break
예제 코드 2
<코드 2>
# python 3.9.6
# opencv-python 4.5.3.56
# matplotlib 3.4.3
import cv2 as cv
from matplotlib import pyplot
img = cv.imread('image/view1.jpg', flags=cv.IMREAD_COLOR)
pyplot.imshow(img)
pyplot.show()

<코드 2>는 데이터 시각화 파이썬 패키지(라이브러리) matplotlib를 이용해 이미지를 화면에 출력한다.
예제 코드 3
<코드 2>를 통해 화면에 출력되는 이미지의 색상이 원본과 달라 검색해 보니 OpenCV는 BGR(blue, green, red)을 사용하고 matplotlib는 RGB를 사용하기 때문에 이미지에서 R과 B의 위치를 서로 바꿔주어야 한다고 한다.
<코드 3>
# python 3.9.6
# opencv-python 4.5.3.56
# matplotlib 3.4.3
import cv2 as cv
from matplotlib import pyplot
img = cv.imread('image/view1.jpg', flags=cv.IMREAD_COLOR)
b, g, r = cv.split(img) # 방식 1
img = cv.merge([r, g, b]) # 방식 1
# img = cv.cvtColor(img, cv.COLOR_BGR2RGB) # 방식 2
pyplot.imshow(img)
pyplot.show()

'코딩 > 파이썬 opencv' 카테고리의 다른 글
| opencv-python 005. 카메라, 비디오 영상을 화면에 출력 (0) | 2021.09.26 |
|---|---|
| opencv-python 003. imwrite()로 이미지 파일로 저장 (0) | 2021.09.08 |
| opencv-python 002. imread()로 이미지를 불러오고 imshow()로 화면에 출력 (0) | 2021.09.07 |
| opencv-python 001. opencv-python 패키지 설치 및 예제 프로그램 실행 (0) | 2021.09.05 |