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