When will you grow up?

plt.imshow & cv2.imshow 본문

02. Study/Computer Vision(openframworks&opencv)

plt.imshow & cv2.imshow

미카이 2020. 2. 22. 01:46

Python을 이용하여 이미지를 보여주거나 확인할때 가장 많이 사용하는 cv2.imshow와 plt.imshow 함수의 간단한 차이점을 살펴보겠다.

 

사용할 이미지로는 구글 로고를 이용하겠다.

구글 로고 이미지

필요 라이브러리 import

import cv2

import matplotlib.pyplot as plt

from matplotlib.image import imread

cs

 

# image load

mat_img = image.imread('90.png'# (230, 579, 4)

cv_img = cv2.imread('90.png' ,0)    # (230, 579)


cs

.png 파일로 저장되어 있기때문에, matplot 에 imread로 읽을시 원본 그대로 읽는것 같다. 그래서 4채널로 들어오게 되는데 만약 cv 함수로 원본 그대로 읽고 싶다면, cv2.imread('90.png', -1) 인자값을 주면 alpha 값까지 읽을것이다. (0:gray, 1: rgb, -1: origin)

 

 

# image show

plt.imshow(cv_img)

cv2.imshow('gray image', cv_img)

cv2.waitKey(0)

cv2.destroyAllWindows()

cs

(plt.imshow / cv2.imshow) [result]

gray로 읽었는데 출력을 해보면, cv2.imshow와 plt.imshow 함수 결과가 다를 수 있는데, plt.imshow 함수는 default 값이 color로 출력하게 되어있어서 내부적으로 변환이 이뤄지는것 같은데, cmap(color map)형식 인자값을 다양하게 변경가능하며, plt.imshow(cv_img, cmap='gray') 으로 변경하면 gray형식으로 출력되는것을 확인할 수 있다. 하지만 내부적으로 color를 조절해서 조금은 다른 결과가 나올 수 있다.

 

plt.imshow(cv_img, cmap='gray')

 

tip.. 출력은 plt.imshow로 여러장을 한번에 출력하는게 편해서 좋지만, 원본 타입을 보고싶다면 cv2.imshow 함수를 이용하고 read는 cv2로 읽는게 훨씬 빠르다 애용하자 ~_~ 

 

 

 

전체코드는 아래와 같습니다.

import cv2

import matplotlib.pyplot as plt

import matplotlib.image as image

 

# image load

mat_img = image.imread('90.png'# (230, 579, 4)

cv_img = cv2.imread('90.png'0)    # (230,579, 4)

 

# image show

plt.imshow(cv_img, cmap='gray')

cv2.imshow('gray image', cv_img)

cv2.waitKey(0)

cv2.destroyAllWindows()

cs

 

ref : https://matplotlib.org/3.1.1/contents.html

Comments