OpenCV자료

Download Report

Transcript OpenCV자료

OpenCV 환경 구축 및
도형 그리기 예제
부산대학교
STEM
목차
• OpenCV 환경 구축
• 도형 그리기 예제
3p-10p
11p-17p
2 /17
OpenCV 환경 구축
• 필요한 것
– OpenCV 2.4.3
• http://sourceforge.net/projects/opencvlibrary/
– Visual Studio 2010
• https://www.dreamspark.com/Student/Software-Catalog.aspx
• 참고
– http://gyeongju.tistory.com/entry/Visual-Studio-2010OpenCV-243-설치
3 /17
OpenCV 환경 구축
1. 먼저 다운받은 OpenCV의 압축을 C:\에 해제합니다.
4 /17
OpenCV 환경 구축
1. 환경 변수를 등록하기 위해 이동합니다.
–
내컴퓨터 -> 시스템속성 -> 고급시스템설정 -> 환경변수
5 /17
OpenCV 환경 구축
1. 환경 변수를 등록합니다.
–
–
환경변수 이름 : OPENCV_BUILD
변수 값 : OpenCV 설치 경로 + \build
2. Path를 편집합니다.
–
–
변수 값에 다음 값 추가
;%OPENCV_BUILD%\x86\vc10\bin;
6 /17
OpenCV 환경 구축
1.
2.
VS2010 실행 후 Win32 콘솔응용 프로그램 프로젝트 생성
속성관리자로 이동하여 Debug|win32에서 새 프로젝트 속성 시트
추가
7 /17
OpenCV 환경 구축
1.
2.
추가한 속성시트를 클릭하여 속성 페이지로 들어간다.
C/C++  추가 포함 디렉터리  편집 
$(OPENCV_BUILD)\include 입력
8 /17
OpenCV 환경 구축
1.
속성 페이지에서 링커  일반  추가 라이브러리 디렉터리  편
집  $(OPENCV_BUILD)\x86\vc10\lib 입력
9 /17
OpenCV 환경 구축
1.
속성 페이지에서 링커  입력  추가 종속성  편집
opencv_core243d.lib
opencv_imgproc243d.lib
opencv_highgui243d.lib
 opencv_ml243d.lib
opencv_video243d.lib
opencv_features2d243d.lib
opencv_calib3d243d.lib
추가
10 /17
도형 그리기 예제
• OpenCV를 이용하여
여러 가지 도형
(선, 사각형, 원)을
그려보자
11 /17
도형 그리기 예제
•
•
•
•
도형을 그리는 예제를 통해 OpenCV를 사용하기 위해 필요한 함수 및 구조체에 대해
서 알아본다.
선, 사각형, 원 등의 도형을 그리기 위한 이미지를 먼저 생성한다.
예제
IplImage* canvas = cvCreateImage(cvSize(500, 500), IPL_DEPTH_8U, 3);
IplImage
–
–
•
이미지를 받아 처리하기 위한 구조체
이미지에 관한 다양한 정보를 가지고 있으며, char형 imageData를 통해 이미지에 대한 직접
적인 접근이 픽셀단위로 가능하다
cvCreateImage(CvSize size, int depth, int chennal );
–
–
–
–
이미지를 생성하는 함수
Size : 이미지의 크기
Depth : 한 픽셀을 표현하는데 사용되는 bit의 크기
Channal : 이미지를 표현하는 채널의 개수
• 그레이 이미지는 1채널, RGB는 3채널
12 /17
도형 그리기 예제
•
cvLine(CvArr* Img, CvPoint ptLineStart, CvPoint ptLineEnd,
CvScalar LineColor, int thickness, int line_type, int shift);
–
–
–
–
–
–
–
•
선을 그리기 위한 함수
Img : 선을 그릴 IplImage 포인터
ptLineStart : 선이 시작되는 좌표 (int x, int y 값을 가진다) / ptLineEnd : 선이 끝나는 좌표
LineColor : 선의 색 / CV_RGB(R,G,B)를 통해서 설정 가능하다
Thickness : 선의 굵기 / 기본값 1
기본값이 정해져 있어
Line_type : 선의 타입 / 기본값 8
따로 값을 설정하지
 선을 생성하는 방법으로 8-이웃, 4-이웃, Anti-Aliasing등이 존재한다
않아도 선을 생성
Shift
: 소주 점 반영 / 기본값 0
할 수 있다.
예제
CvPoint ptLineStart = CvPoint();
CvPoint ptLineEnd= CvPoint();
int lineLength = 30;
ptLineStart.x = 10;
ptLineStart.y = 10;
ptLineEnd.x = ptLineStart.x + lineLength;
ptLineEnd.y = ptLineStart.y + lineLength;
cvLine(canvas, ptLineStart, ptLineEnd, CV_RGB(255,0,0), 2, 10);
cvShowImage("Canvas", canvas);
cvWaitKey(0);
13 /17
도형 그리기 예제
•
CvRectangle(CvArr* Img, CvPoint ptRectLU, CvPoint ptRectRD,
CvScalar LineColor, int thickness, int line_type, int shift);
–
–
–
–
–
–
–
•
사각형을 그리기 위한 함수
Img : 사각형을 그릴 IplImage 포인터
ptRectLU : 사각형의 왼쪽 상단 좌표(int x, int y 값을 가진다) ptRectRD : 오른쪽 하단 좌표
LineColor : 선의 색 / CV_RGB(R,G,B)를 통해서 설정 가능하다
Thickness : 선의 굵기 / 기본값 1
Line_type : 선의 타입 / 기본값 8
도형이 색으로 채워지게 하기 위해서는
Thickness와 Line_type을 다음과 같이
Shift
: 소주 점 반영 / 기본값 0
설정해주면 된다
예제
CvPoint ptRectLU = CvPoint();
CvPoint ptRectRD = CvPoint();
int rectLength = 30;
ptRectLU.x = 40;
ptRectLU.y = 40;
ptRectRD.x = ptRectLU.x + rectLength;
ptRectRD.y = ptRectLU.y + rectLength;
cvRectangle(canvas, ptRectLU, ptRectRD, CV_RGB(0,255,0), -1, CV_AA);
cvShowImage("Canvas", canvas);
cvWaitKey(0);
14 /17
도형 그리기 예제
•
cvCircle(CvArr* Img, CvPoint ptCircleCenter, int cicleRadius,
CvScalar LineColor, int thickness, int line_type, int shift);
–
–
–
–
–
–
–
–
•
원을 그리기 위한 함수
Img : 원을 그릴 IplImage 포인터
ptCircleCenter : 원의 중심 좌표(int x, int y 값을 가진다)
cicleRadius 원의 반지름
LineColor : 선의 색 / CV_RGB(R,G,B)를 통해서 설정 가능하다
Thickness : 선의 굵기 / 기본값 1
Line_type : 선의 타입 / 기본값 8
Shift
: 소주 점 반영 / 기본값 0
예제
CvPoint ptCircleCenter = CvPoint();
int cicleRadius = 30;
ptCircleCenter.x = 100;
ptCircleCenter.y = 100;
cvCircle(canvas, ptCircleCenter, cicleRadius, CV_RGB(0,0,255), -1, CV_AA);
cvShowImage("Canvas", canvas);
cvWaitKey(0);
15 /17
도형 그리기 예제
•
cvNamedWindow(const char* name, int flag)
–
–
–
•
cvShowImage(const char* name, CvArr* img);
–
–
–
•
IplImage 구조체를 삭제하고 메모리를 반환하는 함수
img : 메모리를 해제할 IplImage 포인터
cvDestroyWindow(const char* name)
–
–
•
생성한 이미지를 보기 위해 윈도우를 호출하는 함수
name : 윈도우의 이름
img : 윈도우에 표시할 IplImage 포인터
cvReleaseImage(CvArr** img);
–
–
•
이미지를 보기 위한 윈도우를 생성하는 함수
name : 윈도우의 이름
Flag : 원도우 크기를 고정으로 할건지 정하는 flag / 0이면 false, 1이면 true
생성된 윈도우를 제거하는 함수
name : 윈도우의 이름
예제
IplImage* canvas = cvCreateImage(cvSize(500, 500), IPL_DEPTH_8U, 3);
cvNamedWindow("Canvas",1);
cvShowImage("Canvas", canvas);
cvReleaseImage(&canvas);
cvDestroyWindow("Canvas");
16 /17
도형 그리기 예제
• 실행 결과
17 /17