본문 바로가기
인공지능/컴퓨터비전

[컴퓨터비전] OpenCV의 소개와 기본적인 사용법

by 책 읽는 개발자_테드 2020. 5. 10.
반응형

OpenCV란?

 

 Open Source Computer Vision Library의 약자로, 영상 처리와 컴퓨터 비전 관련 오픈 소스 라이브러리입니다. 2,500개가 넘는 알고리즘으로 구성되어 있다. 해당 구성은 다음과 같습니다.

 1. 영상 처리, 컴퓨터 비전, 기계 합습과 관려된 전통적인 알고리즘

 2. 얼굴 검출과 인식, 객체 인식, 객체 3D 모델 추출, 스테레오 카메라에서 3D 좌표 생성

 3.고해상도 영상 생성을 위한 이미지 스티칭, 영상 검색, 적목 현상 제거, 안구 운동추적

 

 C, C++, 파이썬, 매트랩 인터페이스를 제공하고 윈도우즈, 리눅스, 안드로이드, 맥 OS 등 다양한 운영체제를 지원합니다. MX(MultiMedia eXtension)와, SSE(Streaming SIMD Extensions) 명령어를 통해 고속 알고리즘을 구현합니다. 또한 CUDA와 OpenCL 인터페이스 개발을 통해 GPU 프로그래밍이 가능하도록 구현되었습니다.

 

*스테레오 카메라: 동시에 2장의 화상을 얻을 수 있게 한 특수카메라이다. 2개의 촬영용 렌즈를 일정 간격 띄워놓고 같은 물체를 촬영하는 방법을 사용한다. 이렇게 얻은 사진을 스테레오 뷰어를 이용하여 보면 상이 입체적으로 보인다.

[네이버 지식백과] 입체카메라 [stereoscopic camera] (두산백과)

 

 

버전 별 특징

 

0.1ver

C 언어 기반 API를 사용한다.

비주얼 스튜디오에서 라이브러리 컴파일 후 사용한다. 

구조체 기반 데이터 구조를 사용한다.

• highGUI 모듈에서 8비트 PNG, JPEG2000 입출력을 지원한다.

 

2.0ver

C++ 언어 기반 API를 사용한다.

클래스 기반 데이터 구조를 도입했다.

CMake를 이용하여 라이브러리 컴파일 후 사용 가능하다.

highGUI에서 스테레오 카메라를 지원한다.

 

2.1ver

OpenMP에서 인텔 TBB(Threading Building Blocks)로 병렬처리 루프를 변경한다.

윈도우와 Mac OS X의 64비트 모드에서 OpenCV 빌드가 가능하게 되었다.

에러 체킹 코드 대신에 C++ try-catch문을 사용한다.

 Mac OS에서 Cocoa와 QTKit을 지원한다.

 

2.2ver

 안드로이드(모바일)를 지원한다.

GPU 처리를 지원한다. (처리 속도가 빨라짐을 의미한다.)

템플릿 자료구조가 추가되었다.

 5개의 기존 라이브러리를 12개 작은 모듈로 재구성했다.

 

2.3ver

GPU 모듈에서 CUDA 4.0을 지원한다.

Stitching 모듈에서 파노라마를 지원한다.

• 새롭게 제공되는 바이너리 패키지가 다양한 프리컴파일 라이브러리를 포함한다.

 

2.4ver

SIFTSUFT유료 모듈로 변경했다.

SIFT 성능을 대폭 개선했다.

새 기본 클래스인 cv::Algorithm을 도입했다.

캐니 에지 알고리즘을 컬러 영상에서 수행할 수 있게 되었다.

 

3.0ver

모바일 CUDE를 지원한다.

기존 C++ API를 대폭 개선했다.

IPP, FastCV 같은 저수준 API를 지원한다.

cv::Algorithm을 적극 사용한다.

 

Documentation

http://docs.opencv.org/

http://docs.opencv.org/3.2.0/ 

 

Tutorials

https://docs.opencv.org/master/d9/df8/tutorial_root.html

 

Q&A 포럼

http://answers.opencv.org/questions/

 

 

OpenCV 설치 및 기본 환경 설정

 

설치 

 OpenCV 공식 사이트(http://opencv.org)에 접속해서 Release 탭을 클릭합니다.

 

 사용하는 OS에 따라 다운로드 후 압축을 해제하고, 설치합니다.

 

 저는 아래 그림 처럼 'C\Users\tlatm\Downloads'에 opencv를 설치했고, 해당 경로는 opencv를 사용하기 위한 환경 설정시 필요합니다.

 

환경 설정

 

 비주얼스튜디오에서 windows 콘솔 응용 프로그램을 하나 만듭니다. 그 후 해당 프로젝트를 우클릭해서 속성탭에 들어갑니다. 그리고 먼저 'C/C++ 탭-일반-추가 포함 디렉터리'에 'OpenCV설치경로/build/include'를 추가합니다.

 

 

 두 번째로  '링커-일반-추가 라이브러리 디렉터리'에 OpenCV설치경로\build\x64\vc14\lib'를 추가합니다.(vc14를 vc15로 바꿔서 적어도 상관 없습니다.)

 

 세 번째로 'OpenCV설치경로\\build\x64\vc14\lib'에 위치한 'lib' 포맷의 파일들을 '링커-입력-추가 종속성'에 아래

그림과 같이 추가합니다. 

 

 마지막으로 비주얼스튜디오 프로젝트가 있는 폴더에 'OpenCV설치경로\\build\x64\vc14\bin'에 위치한 'opencv_world'로 시작하는 'dll' 포맷의 파일들을 복사(ctrl+c), 붙여넣기(ctrl+v)합니다. 

 

OpenCV API 사용

 

 이제 설정이 모두 끝났고, 다음과 같은 코드로 opencv가 정상적으로 비주얼스튜디어오 적용되었는지 확인합니다.

#include <opencv2/highgui.hpp> //cv:imshow()함수 사용을 위해 highgui.hpp 헤더 파일을 포함.

int main()
{
	//cv::Mat는 cv 네임스페이스를 사용하는 것을 의미함.
	cv::Mat image(300, 400, CV_8UC1, cv::Scalar(200));  //300행,400열 크기 행렬 생성 및 200으로 초기화
	cv::imshow("영상보기", image); //행렬의 내용을 윈도우에 영상으로 표시
	cv::waitKey(0); //키보드로부터 키가 입력될 때까지 무한 대기;
}

 

코드 실행시 아래 그림과 같은 화면이 생성되면 성공입니다.

 

*동적 라이브러리 파일, DLL(Dynamic Linking Library)

 프로그램 내에서 함수 호출 정보만 포함하고, 목적 코드를 실행 시간에 호출합니다. 이를 통해 메모리를 절약하고, 디스크 공간을 감소시킬 수 있습니다.

 

 

참조

OpenCV로 배우는 영상 처리 및 응용

이정진 교수님 수업

반응형

댓글