Python OpenCV - matplotlib.pyplot 사용

BANG·2020년 11월 25일
0

OpenCV

목록 보기
2/16

필요한 패키지 설치

$ pip install matplotlib

cv2.cvtColor(src, 변환 코드)

src : 원본 이미지 파일
변환 코드 : 원본 이미지 색상 표현 방식 -> 변경할 색상 표현 방식

OpenCV(BGR) -- cvtColor --> matplotlib(RGB)

입력 이미지변환 코드출력 이미지
BGRcv2.COLOR_BGR2GRAYGRAY
GRAYcv2.COLOR_GRAY2BGRBGR
BGRcv2.COLOR_BGR2HSVHSV
HSVcv2.COLOR_HSV2BGRBGR
BGRcv2.COLOR_BGR2YCrCvYCrCv
YCrCvcv2.COLOR_YCrCv2BGRBGR
import cv2
import os
from matplotlib import pyplot as plt
 
imageFile = 'data/lena.jpg'
 
if os.path.isfile(imageFile):	# 파일이 있는지 확인하기
    imgBGR = cv2.imread(imageFile)	# 이미지 읽어오기(OpenCV)
else:
    print("파일이 존재하지 않습니다.")
 
plt.axis('off')	# 이미지의 테두리에 눈금 처리 여부
 
# cvtColor : 컬러 변환 함수
# 컬러 이미지를 OpenCV에서는 BGR 순서로 저장하고,
# matplotlib에서는 RGB 순서로 저장
 
# cvtColor(원본 이미지, 색상 변환 코드)
# BGR -> RGB로 변경
imgRGB = cv2.cvtColor(imgBGR, cv2.COLOR_BGR2RGB)
 
plt.imshow(imgRGB)	# 이미지 보여주기(matplotlib)
plt.show()

import cv2
import os
from matplotlib import pyplot as plt
 
imageFile = 'data/lena.jpg'
 
if os.path.isfile(imageFile):
    # cv2.imread는 grayscale로 읽어온다
    imgGray = cv2.imread(imageFile, 0)
else:
    print("파일이 존재하지 않습니다.")
 
plt.axis('off')
 
# cmap : 색상 범위를 지정
# interpolation : 보간법
plt.imshow(imgGray, cmap="gray", interpolation="bicubic")
plt.show()

subplot

import cv2
import os
from matplotlib import pyplot as plt
 
path='data/'
 
imageFile1 = 'data/orange.jpg'
imageFile2 = 'data/apple.jpg'
imageFile3 = 'data/baboon.jpg'
imageFile4 = 'data/lena.jpg'
 
if os.path.isdir(path):	# 해당 디렉토리가 있는지 확인(존재하면 True반환)
    # 이미지 읽어오기
    imgBGR1 = cv2.imread(imageFile1)
    imgBGR2 = cv2.imread(imageFile2)
    imgBGR3 = cv2.imread(imageFile3)
    imgBGR4 = cv2.imread(imageFile4)
else:
    print("파일이 존재하지 않습니다.")
    
# 이미지 컬러 변환(BGR -> RGB)
imgRGB1 = cv2.cvtColor(imgBGR1, cv2.COLOR_BGR2RGB)
imgRGB2 = cv2.cvtColor(imgBGR2, cv2.COLOR_BGR2RGB)
imgRGB3 = cv2.cvtColor(imgBGR3, cv2.COLOR_BGR2RGB)
imgRGB4 = cv2.cvtColor(imgBGR4, cv2.COLOR_BGR2RGB)
 
#subplot : 한번에 여러개의 이미지를 표현
# 2행 2열(이미지 4개를 띄우기 위해)
# figsize=(10, 10) : 각각의 그림 사이즈가 10 * 10
# sharey : 모든 서브플롯이 같은 y축 눈금을 사용
fig, ax = plt.subplots(2, 2, figsize=(10, 10), sharey=True)
 
# fig -> 창의 이름을 설정
fig.canvas.set_window_title('Sample Pictures')
 
# 그림마다 픽셀의 눈금 없애기
ax[0][0].axis('off')
ax[0][1].axis('off')
ax[1][0].axis('off')
ax[1][1].axis('off')
 
# 그림의 비율을 일정하게 유지하기
ax[0][0].imshow(imgRGB1, aspect="auto")
ax[0][1].imshow(imgRGB2, aspect="auto")
ax[1][0].imshow(imgRGB3, aspect="auto")
ax[1][1].imshow(imgRGB4, aspect="auto")
 
dstName = "data/myFig.png"
 
# (서브플롯 간 간격 조절)그림 사이의 공백 조절
plt.subplots_adjust(left=0, bottom=0, right=1, top=1, wspace=0.05, hspace=0.05)
 
# 이미지 저장하기(bmp포맷 미지원)
plt.savefig(dstName, bbox_inches="tight")
plt.show()	# 이미지 보여주기
profile
Record Everything!!

0개의 댓글