rueki
Opencv tutorial(python) 1. 이미지 읽기, 컬러 채널 변경하기 본문
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
반응형
'python' 카테고리의 다른 글
Opencv tutorial(python) Template matching (0) | 2020.07.01 |
---|---|
Opencv tutorial(python) 이미지 Thresholding (0) | 2020.06.25 |
Numpy - BroadCasting (0) | 2020.06.01 |
행렬 및 리스트 값 0으로 바꿀 때의 방법 비교하기 (0) | 2020.05.26 |
예외 처리 (Exception) (0) | 2020.05.19 |
Comments