[OpenCV] 01. 이미지 처리 기초

밍벨로퍼·2023년 9월 1일
1

OpenCV

목록 보기
1/1

⏰ 읽는 시간: 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에서 가장 많이 사용하는
기능 중 하나인 도형 그리기에 대해 알아보겠습니다. 🌟

profile
Ai & Robot & Control & IT - 블로그 뉴비입니다.

0개의 댓글