rueki

Opencv tutorial(python) 1. 이미지 읽기, 컬러 채널 변경하기 본문

python

Opencv tutorial(python) 1. 이미지 읽기, 컬러 채널 변경하기

륵기 2020. 6. 24. 22:21
728x90
반응형
import numpy as np
import cv2
import matplotlib.pyplot as plt
%matplotlib inline


img = cv2.imread('데이터 경로')

#잘못된 경로 입력해도 에러가 나질 않는다.
img = cv2.imread('asdf')

 

처음으로 사진 읽어오기를 해볼텐데, cv2.imread() 를 이용해서 쉽게 읽을 수가 있으며, 행렬 형태로 값이 들어오게 된다.

시각화를 하기전에 먼저 shape을 알아보자.

img.shape
#(1300, 1950, 3)

 여기서 학습용 사진으로 사용한 사진의 크기는 높이 1300, 너비 1950, 채널은 rgb 즉 3이다.

 이제 matplotlib 을 이용해서 불러와보자

 

#사진 띄우기
#matplotlib에서 rgb 채널 순서가 다르다
# RGB / red / green /blue
# opencv -> blue / red /green
plt.imshow(img)

 위의 사진이 불러온 사진인데, 뭔가가 어색한 것 같다. 그 이유는 matplotlib에서 rgb순서와 open cv에서의 순서가 다르기 때문이고, 그에 대한 순서는 위의 주석에 안내를 해 놓았다.

 

원래 색깔의 사진을 불러오기 위해, rgb 순서를 변경해보도록 하겠다.

cv2.cvtColor의 COLOR_BGR2RGB를 사용하면 된다.

fix_img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
plt.imshow(fix_img)

 

이번에는 grayscale로 사진을 출력해 보겠다. cv2.IMREAD_GRAYSCALE을 사용하면 된다.

img_gray = cv2.imread('파일 경로', cv2.IMREAD_GRAYSCALE)
img_gray.shape
#(1300, 1950)

plt.imshow(img_gray)

색깔이 전부 빠진것을 확인할 수가 있지만, 완전한 회색을 위해서는 plt.imshow() 에서 cmap을 gray로 설정해야한다.

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

이번에는 사이즈를 변경해보자. cv2.resize를 사용하면된다.

new_img = cv2.resize(fix_img, (1000,400))
plt.imshow(new_img)

비율을 적용해서 줄일 수도 있다.

w_ratio = 0.8
h_ratio = 0.2

#shape은 유지하고 비율대로 줄인다.
new_img = cv2.resize(fix_img,(0,0),fix_img,w_ratio, h_ratio)

마지막으로 이제 이미지를 저장하는 방법을 알아보고 마무리짓도록 하겠다.

cv2.imwrite('저장할 파일명', fix_img)

 

다음시간에는 삼각형, 사각형등의 도형 및 선들을 그리는 방법에 대해서 알아보도록 하겠다.

728x90
반응형
Comments