$ pip install matplotlib
src : 원본 이미지 파일
변환 코드 : 원본 이미지 색상 표현 방식 -> 변경할 색상 표현 방식
OpenCV(BGR) -- cvtColor --> matplotlib(RGB)
입력 이미지 | 변환 코드 | 출력 이미지 |
---|---|---|
BGR | cv2.COLOR_BGR2GRAY | GRAY |
GRAY | cv2.COLOR_GRAY2BGR | BGR |
BGR | cv2.COLOR_BGR2HSV | HSV |
HSV | cv2.COLOR_HSV2BGR | BGR |
BGR | cv2.COLOR_BGR2YCrCv | YCrCv |
YCrCv | cv2.COLOR_YCrCv2BGR | BGR |
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()
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() # 이미지 보여주기