본문 바로가기

AI/openCV

컴퓨터 비전이란? - openCV 설치와 사용

기계가 이미지를 자동으로 인식하고 정확하고 효율적으로 설명되는데 사용하는 기술
  • 컴퓨터를 이용하여 정지 영상이나 동영상으로부터 의미 있는 정보를 추출하는 방법을 연구하는 학문
  • 사람이 눈으로 사물을 보고 인지하는 작업을 컴퓨터가 수행하게 하는 학문
  • image processing

 

영상(image)

1. 그레이 스케일 영상 (grayscale)

- 흑백 사진처럼 색상 정보가 없음
- 밝기 정보만으로 구성
- 1Byte 사용

 

 

2. 트루컬러 영상 (truecolor)

- 컬러 사진처럼 색상 정보를 가지고 있음
- RGV 색상 성분을 각각 256단계로 표현
- 3Byte 사용

 

 

영상 표현 좌표계

 

1. w * h 영상

  • 이미지의 왼쪽 상단이 원점 (0,0)

2. m * n 행렬

 

 

영상 파일 포맷

BMP - 압축X , 용량이 큼
- 단순한 파일 구조 -> 라이브러리 없이 파일 입출력 가능
JPG - 사진과 같은 컬러 영상
- 손실 압축 (용량이 감소)
EX). 디지털 카메라
GIF - 256 색상 이하의 영상 저장 (일반 사진은 화질 열화가 심함)
- 무손실 압축
- 움직임 지원
PNG - BMP와 JPG의 중간
- 무손실 압축
- 알파채널 (투명도) 지원
TIF - 무손실 압축
- 고품질 사진, 고해상도 - 파일 크기가 큼 

 

 

openCV

  • 오픈 소스
  • 컴퓨터 비전, 머신 러닝 라이브러리
  • 영상 입출력 -> 전처리 -> 특징 추출 -> 분할, 객체 검출 및 인식, 포즈 추정, 움직임 분석, 3D  재구성, 화면 출력, 최종 판
  • 모듈
    • Main Modules : Core, widely used, infrastructures
    • Extra modules : Brand new, unpopular, non-free, HW dependency, etc.

 

openCV 설치

  • python 설치 가정 하에 진행
  • version 미리 확인 후 진행
pip install opencv-python

 

  • 설치 후 또 입력했을 때 아래와 같이 뜬다면 설치 완료

  • opencv version 확인(python shell에서 실행)
import cv2

cv2.__version__

 

영상 파일 불러오기

cv2.imread(filename, flag=None)

 

- filename : 불러올 파일 이름(문자열)

- flags : 영상 파일 불러오기 옵션

  • IMREAD_COLOR : RGV로 읽기 (기본값)
  • IMREAD_GRAYSCALE : 흑백
  • IMREAD_UNCHANGED : 파일 속성 그대로 (PNG)

- numpy.ndarray(영상 데이터)

 

영상 파일 저장

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

- img : 저장할 데이터 ( numpy.ndarray )

- params : 파일 저장 옵션 지정(속성과 값의 정수)

- 저장여부에 따라 true or false 반환

 

창 만들기

cv2.namedWindow(winname, flags=None)

- winname : 창 고유의 이름(문자열)

- flags : 창 속성 옵션

  • WINDOW_NORMAL : 영상 크기를 창 크기에 맞게 지정 -> 창 크기 조절 가능 (영상이 너무 클 때 사용)
  • WINDOW_AUTOSIZE : 창 크기를 영상 크기에 맞게 변경-> 크기 변경 불가 (기본값) 

 

창 닫기

cv2.destroyAllWindows()		# 열려있는 모든 창 닫음
cv2.destroyWindow(winname)  # 지정한 창 닫음

- winname : 닫고자 하는 창 이름

 

영상 출력

cv2.imshow(winname, mat)

- winname : 영상 출력 창 이름

- mat : 출력할 영상 데이터

- cv2.waitKey()가 없으면 바로 창이 사라짐

 

입력 대기

cv2.waitKey(delay=None)

- delay : 밀리초 단위 대기 시간 (기본값 = 0)

- 대기 시간 안에 눌린 키의 아스키 코드 값을 반환 (안 눌린다면 -1)

- OpenCV 창이 하나라도 있을 때 동작

- ord()함수를 이용해서 변환 

728x90

'AI > openCV' 카테고리의 다른 글

OpenCV 영상 데이터와 영상 처리  (0) 2024.05.22
Matplotlib 라이브러리  (0) 2024.05.21