OpenCV 소개
참고: 파이썬으로 만드는 OpenCV 프로젝트, 이세우 저
1. OpenCV 개요
OpenCV는 오픈 소스 컴퓨터 비전 라이브러리(Open Soruce Computer Vision Library)를 줄여 쓴 말로, 영상 처리와 컴퓨터 비전 프로그래밍 분야의 가장 대표적인 라이브러리이다.
예전에는 프로그래밍 영역 중에서도 영상 처리나 컴퓨터 비전 분야는 대학원에서나 본격적으로 접하게 될 만큼 비교적 전문 분야였다. 매우 복잡한 수학적 알고리즘을 C/C++ 언어로 구현해야 했으므로 체계적인 수학 지식과 뛰어난 프로그래밍 실력을 갖추고 있지 않으면 이해하기 어려웠기 때문이다.
하지만 이제는 OpenCV와 같은 훌륭한 라이브러리가 있어 기초적인 수학 지식만으로도 이미 구현된 알고리즘을 손쉽게 사용할 수 있게 된 데다가, 메모리 주소하나하나를 직접다뤄야 했던 어렵고 복잡한 C언어가 아닌 비교적 배우기 쉽고 빠르게 구현할 수 있는 파이썬 언어로 OpenCV를 사용할 수 있게 되면서 영상 처리와 컴퓨터 비전 분야의 문턱이 낮아졌다.
2. OpenCV 역사
OpenCV는 본래 인텔의 러시아 팀에서 CPU 집약적인 응용 프로그램의 성능을 향상 시키기 위한 연구의 일부로 시작 되었다. OpenCV는 1999년 1월 IPL(Image Process Library)를 기반으로 C 언어로 처음 작성 되었으며, 2000년에 첫 알파 버전을 대중에 게 선보였다. 2001년부터 2005년까지 다섯 번의 베타 버전을 내놓은 후에 2006년 10월에 첫 번째 정식 버전 1.0을 내놓았는데, 1.0 버전에는 미리 컴파일된 파이썬 모듈이 포함되었고, 볼렌드 c++을 위한 Cmake 파일도 추가되었다.
2009년 9월에 2.0 버전을 배포하면서 STL기반의 새로은 C++ API와 새로운 파이썬 인터페이스를 포함시켰고, 2010년 12월에 배포한 2.2 버전에서는 패키지를 새롭게 정립하면서 지금의 형태인 core, imgproc, features2d, ml, contrilb등의 패키지 구조를 갖추게 되었다. 아울러 파이썬 언어 바인딩에서도 큰 변화가 있었는데, 이전가지는 영상 정보를 저장하는 데 사용하는 자료구조로 자체적인 API를 사용했는데, 이때부터 데이터 과학 분야에 널리 사용하는 NumPy(넘파이) 모듈로 바뀌었다.
2011년 7월에 2.3 버전을 배포하면서 안드로이드를 지원하기 시작했으며, 파이썬 바인딩의 모듈의 이름이 cv였는데, OpenCV 2.x에 대응해서 cv2로 변경하였다. OpenCV는 2.4 버전 이후 패키지의 구조 변경과 폐기된 API제거 등의 이유로 2015년 6월부터 버전 번호를 3.0으로 바꾸어 출시하였다. 2018년 11월에 C++11 지원, DNN 모듈 강화 등의 내용으로 된 4.0 버전을 출시 하였다.
3. 필수 개발 환경
OpenCV의 파이썬 언어 바인딩은 파이썬 버전에 따른 지원에 차이가 전혀 없어서 사용할 파이썬 버전은 어떤 버전을 선택해도 무방하다. 다만 OpenCV 파이썬 바인딩이 사용한 NumPy 모듈이 파이썬 3.0부터 3.3까지의 버전을 지원하지 않아 팡썬 3.4버전 이상이 필요하다.