
OpenCV 4로 배우는 컴퓨터 비전과 머신 러닝
학부 연구생 3학년 시절 랩실에서 스터디했던 것들 정리해서 올리려 합니다. 위의 책으로 Open Cv에 대해서 공부를 하였고 자율주행 대회에 참여하였었습니다. 전체 내용을 다루진 않고 랩실에서 필요한 부분만 스터디하여 정리하겠습니다.
컴퓨터 비전
(1) 컴퓨터 비전이란?
- 정지 이미지 또는 동영상에서 의미 있는 정보를 자동으로 추출하는 기술 및 학문
- 인간의 눈 + 뇌의 인식 기능을 컴퓨터가 카메라(눈) + 알고리즘(뇌)으로 대체하는 것
- 영상 속 객체를 무엇인지 식별하고 인식하는 작업
(2) 컴퓨터 비전의 어려움
- 사람은 직관적으로 인식, 컴퓨터는 명확한 규칙 기반이므로 어렵다
- 조건이 바뀌면 인식도 달라짐
- → 복잡한 상황(조명 변화, 배경 복잡도, 색상 유사도 등)에 취약
(3) 컴퓨터 비전에서 활용하는 영상 정보
- 주요 정보 요소: 밝기, 색상, 모양, 텍스처
- 영상 정보만으로는 객체 구분이 쉽지 않음
- → 조명 변화, 카메라 시점 변화, 배경 복잡도, 잡음 등 다양한 변형 요소 존재
- 따라서 복합적인 정보 조합과 정교한 추출 알고리즘 필요
(4) 컴퓨터 비전 vs 영상 처리
|
구분
|
설명
|
|
영상 처리 (Image Processing)
|
화질 개선, 노이즈 제거 등 저수준 영상 처리
|
|
컴퓨터 비전 (Computer Vision)
|
객체 인식, 분류, 추적 등 고수준 의미 추출
|
- 실제로는 경계가 명확하지 않으며 혼용되어 사용
영상의 구조와 표현 방법
(1) 픽셀(Pixel)과 영상 표현
- 픽셀: 영상을 구성하는 최소 단위 / 사진(picture) + 요소(element), aka. 화소
- 픽셀 값: 밝기 또는 색상 정보 (0~255 정수)
- 영상은 2차원 좌표계로 표현:
- x: 좌 → 우, y: 위 → 아래 (0-기반 표현)
- f(x, y): 해당 좌표의 픽셀 값 (함수 형태 영상 표현)
- 행렬 표현: $a_{j,i}$는 (i, j) 좌표의 픽셀 값
- 영상: w × h (가로 × 세로), 행렬: M × N (행 × 열)
(2) 영상 유형
※ 그레이스케일 영상 (Grayscale)
- 흑백 영상. 밝기 정보만 포함
- 그레이스케일 레벨: 픽셀 밝기 단계. 0 (어두운 검은색) ~ 255 (밝은 흰색)
- 자료형: unsigned char를 uchar, BYTE, uint8_t로 재정의하여 사용 (8bit 부호 없는 정수)
※ 트루컬러 영상 (Truecolor / RGB)
- 다양한 색상 표현
- 픽셀 = (R, G, B) 각 성분 0~255
- (255, 0, 0): 빨강 / (0, 255, 0): 초록 / (0, 0, 255): 파랑
- (255, 255, 0): 노랑 / (255, 255, 255): 흰색 / (0, 0, 0): 검정
- 자료형: uchar[3] → R, G, B 저장

그레이스케일 값이 클수록 밝은 영역, 작을수록 어두운 영역
※ 참고
- 트루컬러는 각 색상 성분(R/G/B)의 비율로 색을 표현
- OpenCV에서는 대부분 영상 데이터를 2차원 배열(행렬)로 다룸
Open CV 개요
(1) Open CV 정의 및 주요 기능
- OpenCV: 컴퓨터 비전 및 머신 러닝을 위한 오픈 소스 라이브러리
- 기능 범위
- 영상 입출력
- 영상 화질 개선 (필터링, 잡음 제거 등)
- 객체 검출, 인식, 추적
- 3차원 비전 문제 해결
- 머신 러닝 알고리즘(kNN, SVM 등)
- 딥러닝(DNN 모델) 실행 지원
(2) OpenCV 주요 모듈
|
모듈 이름
|
주요 기능 및 설명
|
|
calib3d
|
카메라 캘리브레이션 및 3차원 재구성
|
|
core
|
행렬, 벡터 등 핵심 데이터 구조 및 연산 함수
|
|
dnn
|
심층 신경망(딥러닝) 기능 제공
|
|
features2d
|
2D 특징점 추출, 특징 벡터 기술 및 매칭
|
|
flann
|
다차원 공간에서 빠른 최근접 이웃 검색
|
|
highgui
|
영상 화면 출력, 마우스 이벤트 처리 등 UI 기능
|
|
imgcodecs
|
영상 파일 입출력 (BMP, JPG, PNG 등)
|
|
imgproc
|
영상 필터링, 기하학 변환, 색 공간 변환 등 영상 처리
|
|
ml
|
통계적 분류, 회귀 등 머신 러닝 알고리즘
|
|
objdetect
|
얼굴, 보행자 등 객체 검출
|
|
photo
|
HDR, 잡음 제거 등 사진 처리 기능
|
|
stitching
|
영상 이어 붙이기 기능
|
|
video
|
옵티컬 플로우, 배경 차분 등 동영상 처리
|
|
videoio
|
동영상 파일 입출력
|
|
world
|
위 모듈을 통합한 단일 모듈 (모든 기능 포함)
|

(3) 참고 - OpenCV 관련 웹사이트
|
용도
|
웹사이트 주소
|
설명
|
|
공식 홈페이지
|
OpenCV 소개, 설치 파일 및 소스 다운로드
|
|
|
공식 문서
|
OpenCV 함수, 클래스, 튜토리얼 문서
|
|
|
OpenCV 4.0 문서
|
OpenCV 4.0 버전 문서
|
|
|
질문/답변 포럼
|
5만 명 이상 사용자 활동, 다양한 질문과 답변 공유
|
|
|
기본 소스 저장소
|
최신 OpenCV 소스 코드 및 업데이트 현황 확인
|
|
|
추가 모듈 소스 저장소
|
추가 모듈 소스 코드
|
- 문서 사이트에서 함수명이나 클래스명 검색 가능
- 공식 튜토리얼 및 상세 사용법 제공
- 질문 포럼은 개발 중 문제 해결에 도움 됨
- GitHub 저장소에서 최신 소스 및 이슈 관리
'학부 생활 + 랩실 > OpenCv' 카테고리의 다른 글
| Open Cv 스터디 - 3 (객체 검출 - qr 코드 검출) (1) | 2026.03.16 |
|---|---|
| Open Cv 스터디 - 2 (케니 알고리즘, 허프 변환) (0) | 2026.03.16 |