** ⏰ 읽는 시간: 5분**
들어가기 전
OpenCV 란?
OpenCV(Open Source Computer Vision)은 실시간으로 영상을 처리하여 원하는 이미지 변조, 색 검출, 객체 검출 등을 목적으로 하는 오픈소스 라이브러리이다.
이번 글은 쌩기초부터 시리즈로 차근차근 글 올려보겠습니다.
Python Module Requirement
import numpy as np
import matplotlib.pyplot as plt
import cv2
이미지 처리 기초
📌 이미지 파일 불러오기.
사진은 네이버 사진 검색에서, 임의의 강아지 사진을 가져왔다.
- 이미지 파일 read
img = cv2.imread('../data/dog.jpeg')
아래의 이러한 사진을 불러와줬다. (아직 실제 출력 x)
- 이미지 type
type(img) >>> numpy.ndarray
OpenCV에서 이미지 처리는 numpy 모듈 기반으로 이루어진다.
- 이미지 shape
img.shape >>> (424,340,3)
유의할 점 : 세로, 가로 순서라는 점 + 맨 뒤의 숫자는 채널 수 (해당 사진은 RGB로 불러왔기 때문에 채널 수가 3이다. Grayscale (흑백)으로 불러오면 채널 1이다!)
📌 OpenCV 색상 순서 : BGR
보통 이미지 처리를 할때 RGB (Red, Green, Blue) 순서로 픽셀 정보가 들어있다.
❗️ 하지만 OpenCV는 BGR 순이다! (특별한 이유는 없다.)
- 위에서 OpenCV로 read한 이미지 show
plt.imshow(img) >>>
위 사진처럼, matplotlib (plt)가 읽는 RGB 순서와, OpenCV가 읽는 BGR 순서가 달라서 원본과 색상이 다르다.
- cvtColor에서 COLOR_BGR2RGB를 적용
fix_img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB) plt.imshow(fix_img) >>>
BGR2RGB를 적용하면, matplotlib에서 읽는 순서인 RGB 순서로 각 픽셀 정보가 변환된다.
📌 이미지 변환 기초
- 읽을때부터 흑백으로 읽고 싶다면?
img_gray = cv2.imread('../data/dog.jpeg', cv2.IMREAD_GRAYSCALE) plt.imshow(img_gray, cmap='gray') >>>
- 이미지의 사이즈를 변환하고 싶다면? - resize 함수
img.shape >>> (424, 340, 3) new_img = cv2.resize(fix_img, (800, 600)) plt.imshow(new_img); >>>
위 사진처럼 원하는 크기 (800, 600) 으로 resize 됐다.
- 상하좌우 반전 주기
- 상하 반전
plt.imshow(cv2.flip(fix_img,0));
- 좌우 반전
plt.imshow(cv2.flip(fix_img, 1));
- 상하 좌우 둘 다~
plt.imshow(cv2.flip(fix_img,-1));
- 상하 반전
- 이미지 저장
cv2.imwrite('원하는 저장 파일 경로', img)
이상, OpenCV 에서 이미지를 불러오는 방법, 변환하는 방법 기초를 알아보았습니다.
다음으로는, OpenCV에서 가장 많이 사용하는
기능 중 하나인 도형 그리기에 대해 알아보겠습니다. 🌟