-
기본 데이터 타입Programming/OpenCV 2015. 3. 27. 20:45
기본 데이터 타입 OpenCV
OpenCV는 자체적인 기본 데이터 타입을 가진다.
C언어에서 제공하는 기본 데이터 타입이 아니라 OpenCV에서 새로 정의한 구조체 형식의 데이터 타입을 의미한다.좌표, 크기, 사각형, 4차원 스칼라 벡터에 대한 구조체 정의
구조체 멤버 생성자 함수 용도 CvPoint int x, y cvPoint() 영상 내 한 점의 위치 CvPoint2D32f float x, y cvPoint2D32f() 2차원 실수 공간에서의 좌표 CvPoint3D32f float x, y, z cvPoint3D32f() 3차원 실수 공간에서의 좌표 CvSize int width, height cvSize() 영상의 크기 CvRect int x, y, width, height cvRect() 영상의 일부 영역 CvScalar double val[4] cvScalar()
cvRealScalar()
cvScalarAll()RGB값 cvScalar() - 네 개의 인자를 받아 val[] 배열에 지정
cvRealScalar() - 하나의 인자를 받아 val[0]으로 설정, 나머지 값(val[1], val[2], val[3])은 모두 0으로 설정
cvScalarAll() - 하나의 인자를 받아 이를 val[] 배열의 모든 원소에 동일하게 대입
ex)#include "cv.h" #include "highgui.h" int main() { CvPoint pt0 = cvPoint(10, 20); CvPoint2D32f pt1 = cvPoint2D32f(30.0, 40.0); CvPoint2D64f pt2 = cvPoint2D64f(50.0, 60.0); printf("pt0 : %d, %d\n", pt0.x, pt0.y); printf("pt1 : %f, %f\n", pt1.x, pt1.y); printf("pt2 : %f, %f\n", pt2.x, pt2.y); CvScalar color1 = cvScalar(255, 255, 255); CvScalar color2 = cvScalar(255); CvScalar color3 = cvRealScalar(255); CvScalar color4 = cvScalarAll(255); printf("color1.val: %f, %f, %f, %f\n", color1.val[0], color1.val[1], color1.val[2], color1.val[3]); printf("color2.val: %f, %f, %f, %f\n", color2.val[0], color2.val[1], color2.val[2], color2.val[3]); printf("color3.val: %f, %f, %f, %f\n", color3.val[0], color3.val[1], color3.val[2], color3.val[3]); printf("color4.val: %f, %f, %f, %f\n", color4.val[0], color4.val[1], color4.val[2], color4.val[3]); return 0; }
결과pt0 : 10, 20 pt1 : 30.000000, 40.000000 pt2 : 50.000000, 60.000000 color1.val: 255.000000, 255.000000, 255.000000, 0.000000 color2.val: 255.000000, 0.000000, 0.000000, 0.000000 color3.val: 255.000000, 0.000000, 0.000000, 0.000000 color4.val: 255.000000, 255.000000, 255.000000, 255.000000
ex) 좌측 상단(5, 10) 우측 하단(20, 30)인 흰 사각형
cvRectangle( myImg, cvPoint(5, 10); cvPoint(20, 30); cvScalar(255, 255, 255); }
ex) CvSize, CvRect
#include "cv.h" #include "highgui.h" int main() { CvSize size = cvSize(720, 480); CvRect rect = cvRect(100, 100, 400, 200); CvPoint pt1, pt2; printf("size : %d, %d\n", size.width, size.height); pt1.x = rect.x; pt1.y = rect.y; pt2.x = rect.x + rect.width; pt2.y = rect.y + rect.height; printf("Left Top Point(p1) : %d, %d\n", pt1.x, pt1.y); printf("Right Bottom Point(p2) : %d, %d\n", pt2.x, pt2.y); return 0; }
결과size : 720, 480 Left Top Point(p1) : 100, 100 Right Bottom Point(p2) : 500, 300
행렬과 영상 타입
IplImage는 흔히 '영상'이라고 부르는 것을 표현하는 데이터 타입이다.
OpenCV는 C 언어로 구현되었지만 OpenCV 구조체는 객체지향적 구조이다.
즉, IplImage는 CvMat에서 상속되었고 CvMat은 CvArr로부터 상속된 구조를 갖는다.
'Programming > OpenCV' 카테고리의 다른 글
cvSplit, cvMerge, cvFlip (0) 2015.04.14 IplImage 구조체 (0) 2015.04.12 CvMat 행렬 구조체 (0) 2015.03.27 동영상 재생 (0) 2015.03.27 정지 영상 출력 (0) 2015.03.21