OpenCV 역사
- 1998: Intel 주도로 개발, 이후 오픈소스화 됨
- 2006: OpenCV 1.0, C로 구현(함수 & 구조체), IplImage 구조체
- 2009: OpenCV 2.0, C++로 전환(클래스), Mat 클래스
- 2015: OpenCV 3.0, OpenCV 프로젝트 구조 개선, GPU, IPP 활용 확대
- 2017: OpenCV 3.3, DNN(Deep Neural Network) 모듈 지원
- 2018: OpenCV 4.0, C++11, C++17 지원 (C API 지원 중단)
- 2021: OpenCV 4.5.5
- 2023: OpenCV 4.8.0 ~
OpenCV 메인 모듈의 이름과 설명
영상 입출력 관련
- core
- 행렬, 벡터 등의 OpenCV 핵심 클래스와 연산 함수
- videoio
- imgcodecs
전처리
- imgproc
- 필터링, 기하학적 변환, 색 공간 변환 등의 영상 처리 기능
- photo
특징 추출
- imgproc
- features2d
- 2차원 특징 추출과 특징 벡터 기술, 매칭 방법
객체 검출, 영상 분할
분석: 객체 인식, 포즈 추정, 움직임 분석, 3D 재구성
- calib3d
- video
- 옵티컬 플로우, 배경 차분 등의 동영상 처리 기술
- stitching
- ml
- dnn
화면 출력, 최종 판단
- highgui
- 영상의 화면 출력, 마우스 이벤트 처리 등의 사용자 인터페이스
- ml
- dnn
그 외
- flann
- java, js, python
- Java, JavaScript, Python 인터페이스 지원
- world
- 여러 OpenCV 모듈을 포함하는 하나의 통합 모듈
- dll 파일에서 용량이 커질 수 있음
OpenCV 추가 모듈의 이름과 설명
- aruco
- ArUco Maker Detection (augmented reality & camera callibration)
- bgsegm
- Improved Background-Foreground Segmentation Methods
- cuda XXXXXX
- face
- Face recognition techniques, face landmark detection
- freetype
- optflow
- sfm
- Structure From Motion module
- shape
- Shape descriptors and matchers
- stereo
- Stereo correspondence with different descriptors
- superres
- tracking
- videostab
- xfeatures2d
- Extra 2D Features Framework
- ximgproc
- Extended image processing module
OpenCV 라이브러리 구성 환경
(출처: slide share - Kirill Kornyakov, Itseez, ICVS 2013)
OpenCV 설치, 사용 시 구성 성분
- OpenCV 헤더파일, LIB 파일:
- OpenCV 프로그램을 빌드할 때 필요
- (windows 기준)
opencv/build/include
내부 hpp 파일을 사용하는 것으로 추정
- (windows 기준)
opencv/build/x64/vc*/lib
내부 lib 파일을 사용하는 것으로 추정
- OpenCV DLL 파일:
- OpenCV 프로그램을 실행할 때 필요
- (windows 기준)
opencv/build/x64/vc*/bin
내부 dll 파일을 사용하는 것으로 추정
- 내 PC의 환경변수에 dll 을 포함한 디렉터리 추가해야 실행 가능
- 내 프로젝트에 OpenCV 헤더파일 위치 지정 (C++ > 일반 > 추가 포함 디렉터리)
- OpenCV LIB 파일 위치 지정 (링커 > 일반 > 추가 라이브러리 디렉터리)
- OpenCV LIB 파일 이름 지정 (링커 > 입력 > 추가 종속성)
- debug(파일 끝에 d 있음) / release 각각 위의 1~3번 설정 해야 함
References