Chapter 02. OpenCV C API 자료구조
OpenCV에서 제공하는 자료구조는 typeder문과 struct로 정의 ,
cxtypes.h 해더파일에 정의
CXCORE 부분에 설명
기본적 자료구조와 그의 인라인 함수에 대해 설명
-인라인 함수 : 자료형의 초기화를 위한 함수
1.CvPoint, CvScalar, CvSize, CvRect
(1) CvPoint, CvPoint2D32f, CvPoint2D64f,
영상 : 행렬형태의 2차원 화소 (pixel)들의 집합
각 화소 or 2차원 점의 좌표 표현 : CvPoint, CvPoint2D32f, CvPoint2D64f 구조체 사용
화소의 밝기 값 or 컬러 값 표현 : CvScalar
* 행렬 (CvMat)과 영상 (IplImage)에서의 좌표계
-왼쪽 상단 : 원점
CvPoint 자료구조 |
typedefstructCvPoint { intx; inty; }CvPoint; typedefstructCvPoint2D32f { floatx; floaty; }CvPoint2D32f; typedefstructCvPoint2D64f { doublex; doubley; }CvPoint2D64f; |
CvPoint 인라인 함수 |
CV_INLINE CvPoint cvPoint(intx,inty) { CvPoint p; p.x=x; p.y=y; returnp; } CV_INLINE CvPoint2D32f cvPoint2D32f(doublex,doubley) { CvPoint2D32f p; p.x=(float)x; p.y=(float)y; returnp; } CV_INLINE CvPoint2D64f cvPoint2D64f(doublex,doubley) { CvPoint2D64f p; p.x=x; p.y=y; returnp; } |
(2) CvScalar
화소의 밝기 값 or 컬러 값 표현
그레이 스케일 영상 : val[0]
컬러영상 :
val[0] = B
val[1] = G
val[2] = R
val[3] = alpha
CvScalar 자료구조 |
typedefstructCvScalar { doubleval[4]; }CvScalar; |
CvScalar 인라인 함수 |
CV_INLINE CvScalar CvScalar(doubleval0,doubleval1 CV_DEFAULT(0), doubleval2 CV_DEFAULT(0), doubleval3 CV_DEFAULT(0) ) { CvScalar scalar; scalar.val[0]=val0; scalar.val[1]=val1; scalar.val[2]=val2; scalar.val[3]=val3; returnscalar; } CV_INLINE CvScalar CvRealScalar(doubleval0) { CvScalar scalar; scalar.val[0]=val0; scalar.val[1]=scalar.val[2]=scalar.val[3]=0; returnscalar; } CV_INLINE CvScalar CvScalarAll(doubleval0123) { CvScalar scalar; scalar.val[0]=val0123; scalar.val[1]=val0123 scalar.val[2]=val0123 scalar.val[3]=val0123; returnscalar; } |
CvScalar 자료형을 위한 인스턴스 생성 인라인 함수는 3가지이다 .
- cvScalar : 4개의 인수 , val0은 반드시 초기화 나머지는 자동 0으로 초기화
- cvRealScalar : 1개의 채널 영상일 때 편리 ~ 그레이스케일 영상
- cvScalarAll : 하나의 인수을 입력받아 크기가 4인 배열에 동일값으로 초기화
- Real이 포함된 함수 : 채널이 1인 영상 or 행렬에서 사용하는 함수
CvPoint, CvPoint2D32f, CvPoint2D64f |
#include<iostream> #include<opencv2/opencv.hpp> intmain() { CvPointpt0 =cvPoint(10,20); CvPoint2D32fpt1 =cvPoint2D32f(30.0,40.0); CvPoint2D64fpt2 =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); return0; } |
pt0 : 10, 20 pt1 : 30.000000, 40.000000 pt2 : 50.000000, 60.000000 Program ended with exit code: 0 |
CvScalar |
#include<iostream> #include<opencv2/opencv.hpp> intmain() { CvScalarcolor1 =cvScalar(255,255,255); CvScalarcolor2 =cvScalar(255); CvScalarcolor3 =cvRealScalar(255); CvScalarcolor4 =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]); return0; } |
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 Program ended with exit code: 0 |
(3)CvSize, CvRect
CvSize : 영상 및 영역의 크기 표현 자료구조
typedefstruct { intwidth; intheight; }CvSize; CV_INLINE CvSize CvSize(intwidth,intheight) { CvSize s; s.width=width; s.height=height; returns; } |
CvRect : 사각형을 위한 자료구조
typedefstructCvRect { intx; inty; intwidth; intheight; }CvRect; CV_INLINE CvRect cvRect(intx,inty,intwidth,intheight) { CvRect r; r.x=x; r.y=y; r.width=width; r.height=height; returnr; } |
CvSize, CvRect와 인스턴스 생성 함수 |
#include<iostream> #include<opencv2/opencv.hpp> intmain() { CvSizesize =cvSize(720,480); CvRectrect =cvRect(100,100,400,200); CvPointpt1, 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); return0; } |
size : 720, 480 Left Top Point(p1) : 100, 100 Right Bottom Point(p2) : 500, 300 Program ended with exit code: 0 |
'Studynote > Computer Science 12' 카테고리의 다른 글
Chapter_02_3_IplImage 영상 자료구조 (0) | 2018.11.03 |
---|---|
Chapter_02_2_CvMat 행렬 자료구조 (0) | 2018.11.03 |
Chapter_01_OpenCV_개요 (0) | 2018.11.03 |
Skill Tree (0) | 2017.12.26 |
<RC>Ch06_Inference (0) | 2017.11.30 |
댓글