OpenCV_1

YJ·2023년 7월 3일
0

▷ 오늘 학습 계획: OpenCV 강의(1~3)

📖 Chapter 01_컴퓨터 비전

1. 컴퓨터 비전 개요

컴퓨터 비전: 컴퓨터를 이용하여 정지 영상 또는 동영상으로부터 의미 있는 정보를 추출하는 방법을 연구하는 학문

2. 컴퓨터 비전 응용 분야

  • 영상의 화질 개선(image enhancement)
    카메라로 찍은 사진을 더욱 선명하게 만들거나 색상을 원하는 형태로 변경
    RAW 영상의 변환, 사진앱의 필터, 잡음 제거, HDR, Super Resolution

  • 내용 기반 영상 검색(content-based image/video retrieval)
    영상에 존재하는 사람, 사물, 색상 정보 등을 인식하여 유사한 영상을 자동으로 찾아주는 시스템, 비주얼 검색(visual search)
    구글 이미지 검색, 구글 클라우드 비전 API

  • 얼굴 검출 및 인식
    얼굴 검출(face detection): 영상에서 얼굴의 위치와 크기를 찾는 기법
    얼굴 인식(face recognition): 검출된 얼굴이 누구인지를 판단하는 기술
    미세한 표정 변화도 감지, 조명 변화, 안경 착용, 헤어 스타일 변화등

  • 의료 영상 처리
    X-ray 또는 CT 영상 처리
    영상 화질의 개선, 영상의 자동 분석

  • 광학 문자 인식
    영상에 있는 텍스트를 인식(OCR: Optical Character Recognition)
    번역, 자동차 번호판 인식 등

  • 머신 비전(machine vision)
    공장 자동화: 제품의 불량 검사, 위치 확인, 측정 등
    높은 정확도와 빠른 처리 시간 요구

  • 인공지능 서비스
    입력 영상을 객체와 배경으로 분할, 객체와 배경 인식, 상황 인식, 로봇과 자동차의 행동 지시
    computer vision + sensor fusion + deep learning
    인공지능 로봇, Amazon Go, 자율 주행 자동차

3. 영상데이터의 구조

  • 영상: 픽셀이 바둑판 모양의 격자에 나열되어 있는 형태(2차원 행렬)

  • 픽셀(pixel): 영상의 기본 단위, picture element의 줄임말, 화소

  • 영상에서 사용되는 좌표계
    w × h 영상(width * height)
    M × N 행렬

4. 영상데이터의 종류

  • 주요 사용되는 영상 데이터의 종류
    ⑴ 그레이스케일 영상(grayscale image)
    흑백 사진처럼 색상 정보가 없이 밝기 정보로만 구성됨(256단계)
    ⑵ 트루컬러 영상(truecolor image)
    컬러 사진처럼 색상 정보를 가지고 있어서 다양한 색상 표현
    R, G, B 각각 256단계 -> 16,777,216 색상 표현 가능

  • 그레이스케일 영상 특징
    밝기 성분을 0(완전히 어두운 검정색) ~ 255(완전히 밝은 흰색) 범위의 정수로 표현
    프로그래밍 언어에서 1Byte 사용
    C/C++ : unsigned char
    Python: numpy.unint8

  • 트루컬러 영상 특징
    R, G, B 각각 0~25 범위의 정수로 표현
    프로그래밍 언어에서 3Bytes 사용
    C/C++: 구조체, 클래스
    Python: 튜플, numpy.ndarray

5. 영상 파일 형식과 특징

  • BMP
    픽셀 데이터를 압축하지 않고 그대로 저장하여 용량이 큰 편이다.
    파일 구조 단순, 별도의 라이브러리 없이 파일 입출력 프로그래밍 가능

  • JPG
    주로 사진과 같은 컬러 영상 저장
    손실 압축(lossy compression): 압축률이 좋아서 파일 용량 크게 감소

  • GIF
    256 색상 이하의 영상 저장
    무손실 압축(lossless compression)
    움직이는 GIF 지원

  • PNG
    Portable Network Graphics
    컬러 영상도 무손실 압축
    알파 채널(투명도) 지원

📖 Chapter 02_OpenCV

1. OpenCV 개요

  • Open source
  • Computer vision & machine learning
  • Software library

OpenCV 구성

OpenCV 모듈: 메인 모듈/추가 모듈

2. OpenCV-Python 설치

pip install opencv-python
# OpenCV 추가 모듈도 함께 사용하려면 opencv-contrib-python

3. 기본적인 영상 출력 프로그램

import sys
import cv2

img = cv2.imread('cat.bmp')

if img is None:
    print('image load failed!')
    sys.exit()

cv2.namedWindow('image')
cv2.imshow('image', img)
cv2.waitKey()
cv2.destroyWindow('image')

4. OpenCV 주요 함수 사용법

영상 파일 불러오기

cv2.imread(filename, flags=None)

  • flags
    cv2.IMREAD_COLOR
    cv2.IMREAD_GRAYSCALE
    cv2.IMREAD_UNCHANGED

영상 파일 저장하기

cv2.imwrite(filename, img, params=None)

  • params: 파일 저장 옵션 지정
    정상적으로 저장하면 True, 실패하면 False 반환

새 창 띄우기

cv2.namedWindow(winname, flags=None)

  • flags
    cv2.WINDOW_NORMAL: 영상 크기를 창 크기에 맞게 지정
    cv2.WINDOW_AUTOSIZE: 창 크기를 영상 크기에 맞게(기본값)

창 닫기

cv2.destroyWindow(winname) -> 지정한 창 하나만 닫기
cv2.destroyAllWindows() -> 열려 있는 모든 창 닫기

영상 출력하기

cv.imshow(winname, mat)

  • mat: 출력할 영상 데이터
    Windows: 출력된 이미지를 복사하거나 저장(ctrl s)할 수 있다.
    cv2.waitKey() 함수를 호출해야 화면에 영상이 나타난다.

키보드 입력 대기

cv2.waitKey(delay=None)

  • delay: 기본값 0, delay<=0이면 무한히 기다림

특정 키가 입력되면 창이 닫히게 하는 명령

while True:
	if cv2.waitKey() == ord('q):
    	break
  • 주요 특수키 코드: 27(ESC), 13(ENTER), 9(TAB)

OpenCV API 도움말 찾기

OpenCV 도움말 사이트

5. Matplotlib을 이용한 영상 출력

Matplotlib으로 컬러 영상 출력

  • OpenCV에서 불러온 컬러 영상 데이터는 BGR 순서
  • Matplotlib 영상 데이터의 색상 순서 RGB
    → cv2.cvtColor() 함수로 색상 순서 변경
img = cv2.imread('cat.bmp')
plt.imshow(cv2.cvtColor(cv2.COLOR BGR2RGB))
plt.show()

Matplotlib으로 그레이스케일 영상 출력

  • plt.imshow() 함수에서 컬러맵 cmap = 'gray' 지정
img = cv2.imread('cat.bamp', cv2.IMREAD_GRAYSCALE)
plt.imshow(img, cmap='gray')
plt.show()

▷ 내일 학습 계획: OpenCV 강의(4~5)

[이 글은 제로베이스 데이터 취업 스쿨의 강의 자료 일부를 발췌하여 작성되었습니다.]

0개의 댓글