본문 바로가기
Computer Vision

OpenCV 주요 클래스 - 1. 기본 자료형 클래스

by ksb0511 2020. 2. 8.

1.Point_ 클래스

Point pt1;                // pt1 = (0, 0)
pt1.x = 5; pt1.y = 10;    // pt1 = (5, 10)
Point pt2(10, 30);        // pt2 = (10, 30)

 

  • Point_ 클래스는 2차원 평면 위에 있는 점의 좌표를 표현하는 템플릿 클래스
  • Point_ 클래스는 템플릿 클래스이기 때문에 실제로 사용할 경우 어떤 자료형으로 좌표를 표현할 것인지 명시해야 함.
  • OpenCV는 자주 사용하는 자료형에 대하여 Point_ 클래스 이름을 재정의하여 제공함.
    •  

      
      typedef Point_<int> Point2i;
      typedef Point_<float> Point2f;
      typedef Point_<double> Point2d;
      typedef Point2i Point;

 

2. Size_ 클래스

Size sz1, sz2(10, 20);            // sz1 = [0 x 0], sz2 = [10 x 20]
sz1.width = 5; sz1.height = 10;    // sz1 = [5 x 10]

 

  • 영상 또는 사각형 영역의 크기를 표현할 때 사용
  • 사각형 영역의 가로와 세로 크기를 나타내는 width와 height 멤버 변수를 가지고 있음.
  • Point_ 클래스와 마찬가지로 이름을 재정의하여 사용함.

 

3. Rect_ 클래스

Rect rc1;                    // rc1 = [0 x 0 from (0, 0)]
Rect rc2(10, 10, 60, 40);    // rc2 = [60 x 40 from (10, 10)]

 

  • 사각형의 위치와 크기 정보를 표현할 때 사용
  • 사각형의 좌측 상단 점의 좌표를 나타내는 멤버 변수 = x, y / 사각형의 가로 및 세로 크기를 나타내는 멤버 변수 = width, height
  • Rect_ 클래스는 Size_ 또는 Point_ 클래스 객체와의 산술 연산자 재정의가 가능
    • Rect_ 객체와 Size_ 객체의 연산은 사각형의 가로와 세로 크기의 변경
    • Rect_ 객체와 Point_ 객체의 연산은 사각형의 위치 변경
    • Rect rc3 = rc1 + Size(50, 40);    // rc3 = [50 x 40 from (0, 0)]
      Rect rc4 = rc2 + Point(10, 10);    // rc4 = [60 x 40 from (20, 20)]
  • Rect_ 객체끼리 서로 &, | 연산자를 이용한 논리 연산 수행 가능
    • & 연산 수행 시 두 사각형이 교차하는 사각형 영역 반환
    • | 연산 수행 시 두 사각형을 모두 포함하는 최소 크기의 사각형 반환
    • Rect rc5 = rc3 & rc4;        // rc5 = [30 x 20 from (10, 10)]
      Rect rc6 = rc3 | rc4;        // rc6 = [80 x 60 from (0, 0)]

 

4. RotatedRect 클래스

RotatedRect rr1(Point2f(40, 30), Size2f(40, 20), 30.f);

Point2f pts[4];                    //pts인자는 네 꼭지점 좌표를 저장하는 곳
rr1.points(pts);

Rect br = rr1.boundingRect();

 

  • 회전된 사각형을 표현할 때 사용
  • 회전된 사각형의 중심 좌표를 나타내는 center, 사각형의 가로 및 세로 크기를 나타내는 size, 회전 각도 정보를 나타내는 angle을 멤버 변수로 함.
  • 모든 정보를 float 자료형을 사용하여 표현

댓글