본문 바로가기
💻️ SW Develop/Computer Vision

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

by 밍벨로퍼 2023. 9. 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에서 가장 많이 사용하는
기능 중 하나인 도형 그리기에 대해 알아보겠습니다. 🌟