[OpenCV] 1-2
1. 컴퓨터 비전 시작하기
2. OpenCV 시작하기
1. 컴퓨터 비전 시작하기
1.컴퓨터 비전 개요
- 컴퓨터 비전이란?
-컴퓨터를 이용하여 정지 영상 또는 동영상으로부터 의미 있는 정보 추출하는
방법을 연구하는 학문
=>즉, 사람이 눈으로 사물을 보고 인지하는 작업을 컴퓨터가 수행하게 만드는 학문
- 컴퓨터 비전과 영상 처리
-컴퓨터 비전
컴퓨터 비전은 영상 인식과 같은 고수준의 영상 처리를 지칭-영상 처리
영상 처리는 영상을 다루는 모든 학문과 응용을 통틀어 지칭
영상을 입력으로 받아 화질을 개선하는 등의 처리를 하여 다시 영상을
출력으로 내보내는 작업
컴퓨터 비전을 위한 전처리 작업
2.컴퓨터 비전 응용 분야
영상의 화질 개선
Raw 영상의 변환,사진앱의 필터,잡음 제거내용 기반 영상 검색
영상에 존재하는 사람,사물,색상 정보등을 인식하여 유사한 영상을 찾아주는 시스템 .비주얼 검색얼굴 검출 및 인식
얼굴 검출: 영상에서 얼굴의 위치와 크기를 찾는 기법
얼굴 인식:검출된 얼굴이 누구인지를 판단하는 기술
(미세한 표정 변화,조명,안경,헤어 스타일 변화등 )의료 영상 처리
X-ray 또는 CT영상 처리,영상의 화질 개선,자동 분석광학 문자 인식
영상에 있는 텍스트를 인식, OCR,번역,자동차 번호판 인식등머신 비전
공장 자동화:제품의 불량 검사,위치 확인,측정등
높은 정확도와 빠른 처리 시간 요구인공지능 서비스
입력 영상을 객체와 배경으로 분할=>객체와 배경 인식=>상황 인식
=> 로봇과 자동차의 행동 지시
3.영상 데이터의 구조
- 영상이란?
픽셀이 바둑판 모양의 격자에 나열되어 있는 형태 (2차원 행렬)
픽셀:영상의 기본 단위, 화소
- 영상에서 사용되는 좌표계
4.영상 데이터의 종류
- 주로 사용되는 영상 데이터의 종류
- 그레이스케일 영상
-색상정보 없이 밝기 정보만으로 구성된 영상
-밝기 정보를 256단계로 표현
- 트루컬러 영상
-색상 정보를 가지고 있어서 다양한 색상 표현할 수 있는 영상
-빨강,초록,파랑색 성분을 각각 256단계로 표현
=>256^3=16,777,216 색상 표현 가능
- 그레이스케일 영상의 특징
-밝기 성분을 0-255범위의 정수로 표현
-프로그래밍 언어에서 표현 방법: 1Byte 사용
- 트루컬러 영상의 특징
-R,G,B색 성분의 크기를 각각 0-255범위의 정수로 표현
-0:색 성분이 전혀 없는 상태
-255:색 성분이 가득 있는 상태
- 프로그래밍 언어에서 표현 방법: 3Byte 사용
5. 영상 파일 형식과 특징
- 주요 영상 파일 형식 특징
- 영상 데이터의 용량
2. OpenCV 시작하기
1.OpenCV 개요
- OpenCV?
-Opensource
-Computer vision & machine learning • Software library
OpenCV 모듈
OpenCV 구성
2.기본적인 영상 출력 프로그램
- BMP 파일을 불러와서 출력하는 BmpShow.py 소스 코드
import sys import cv2 #cat.bmp 파일을 불러와 img 변수에 저장 img=cv2.imread('cat.bmp') #영상 파일 불러오기가 실패하면 에러 메세지를 출력하고 종료 if img is None: print('Image load failed!') sys.exit() #'image'라는 이름의 새창을 만들고, 이창에 img영상을 출력하고, # 키보드 입력이 있을 때까지 대기 cv2.nameWindow('image') cv2.imshow('image',img) cv2.waitKey() #생성된 모든 창을 닫음 cv2.destroyAllWindows()
3.OpenCV 주요 함수 사용법
- 영상 파일 불러오기
cv2.imread(filename,flags=None) -> retval
-filename:불러올 영상 파일 이름(문자열)
-flags: 영상 파일 불러오기 옵션 플래그 -retval: 불러온 영상 데이터(numpy.ndarray)
- 영상 파일 저장하기
cv2.imwrite(filename,img,params=None) -> retval
-filename:저장할 영상 파일 이름(문자열)
-img:저장할 영상 데이터
-params:파일 저장 옵션 지정 (속성&값의 정수 쌍)
-retval:정상적으로 저장하면 True,실패하면 False
- 새 창 띄우기
cv2.nameWindow(winname,flags=None) -> None
-winname:창 고유 이름(문자열)
-flags:창 속성 지정 플래그
- 창 닫기
cv2.destroyWindow(winname) ->None cv2.destroyAllWindows() -> None
-winname:닫고자 하는 창 이름
- 영상 출력하기
cv2.imshow(winname,mat) -> None
-winname:영상을 출력할 대상 창 이름
-mat:출력할 영상 데이터
-참고사항
int16, int32 자료형 행렬의 경우, 행렬 원소 값을 255로 나눠서 출력
float32, float64 자료형 행렬의 경우, 행렬 원소 값에 255를 곱해서 출력
winname에 해당하는 창이 없으면 창을 새로 만들어서 영상을 출력함
Windows 운영체제에서는 Ctrl + C (복사), Ctrl + S (저장) 지원
실제로는 cv2.waitKey() 함수를 호출해야 화면에 영상이 나타남
- 키보드 입력 대기
cv2.waitKey(delay=None) -> retval
-delay: 초단위 대기 시간
0<=이면 무한히 기다림, 기본값은 0
-retval:눌린 키 값.키가 눌리지 않으면 -1
-참고사항
cv2.waitKey()함수는 OpenCV창이 하나라도 있을 때 동작
특정 키 입력을 확인하려면 ord()함수를 이용while True: if cv2.waitKey()==ord('q'): break
4.Matplotlib을 이용한 영상 출력
- Matplotlib으로 컬러 영상 출력하기
-OpenCV의 컬러 영상 데이터는 BGR순서이지만,
Matplotlib는 RGB순서
-그러므로 cv2.cvtColor()함수를 이용하여 색상 순서를 변경해야 함img=cv2.imread('cat.bmp') plt.imshow(cv2.cvtColor(img,cv2.COLOR_BGR2RGB)) plt.show()
- Matplotlib으로 그레이스케일 영상 출력하기
-plt.imshow()함수에서 컬러맵을 cmap='gray'로 지정img=cv2.imread('cat.bmp',cv2.IMREAD_GRAYSCALE) plt.imshow(img,cmap='gray') plt.show()
- Matplotlib을 이용하여 영상 출력하기
import matplotlib.pyplot as plt import cv2 #컬러 영상 출력 imgBGR = cv2.imread('cat.bmp') imgRGB = cv2.cvtColor(imgBGR, cv2.COLOR_BGR2RGB) plt.axis('off') plt.imshow(imgRGB) plt.show() # 그레이스케일 영상 출력 imgGray = cv2.imread('cat.bmp', cv2.IMREAD_GRAYSCALE) plt.axis('off') plt.imshow(imgGray, cmap='gray') plt.show()