본문 바로가기

IT

OpenCV Size_ 클래스

OpenCV 컴퓨터 비전에서 Size_ 클래스를 제공합니다.

영상의 크기나 사각형 평면 영역의 크기를 나타낼 때 사용하는 Size_ 클래스에 대해 알아봅니다.

 

 

Size_  클래스는 사각형 크기를 나타내는 템플릿 클래스입니다.

가로길이 width와 세로길이 height를 멤버 변수로 가집니다.

 

OpenCV Size_클래스

Size_ 클래스 선언하기

Size_   클래스는 다음과 같이 정의되어 있습니다.

초기화 값이 다르게 지정되기 때문에 원하는 case에 맞게 선언하여 사용할 수 있습니다.

 


Size_();                                                        // 초기화 : width=0, height=0

Size_(_Tp _width, _Tp _height);      // 초기화 : width=_width, height=_height
Size_( const Size_& sz);                       // 초기화 : x=sz.width.x, y=sz.height

_Tp width, height;

다음과 같이 선언하여 사용할 수 있습니다.

 

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

Size sz3 = sz1 + sz2;                    // sz3 = [15 x 50]
Size sz4 = sz1 * 2;                         // sz4 = [10 x 40]

cout << "sz3: " << sz3 << endl;
cout << "sz4: " << sz4 << endl;

sz1의 경우는 기본 생성자를 사용하여 생성했습니다.

멤버 변수 sz1.width와 sz1.height는 초기값 0을 가집니다.

 

+와 * 등의 사칙연산의 경우는  width변수는 width변수끼리, height 변수는 height 변수끼리 사칙 연산을 수행합니다.

 

OpenCV에서 제공하는 Size_ 클래스는  C++ 표준 출력을 지원합니다.

cout과 <<  연산자를 이용할 경우 다음과 같이 출력합니다.

 

sz3 : [15 X 50]

sz4 : [10 X 40]

 

자료형 재정의하기

템플릿 클래스로 정의되어 있고

OpenCV에서는 주로 사용하는 자료형에 대해 Size_ 클래스 이름을 재 정의하여 제공하고 있습니다.

 

typedef Size_<int>         Size2i;  //정수형
typedef Size_<int64>     Size2l;   
typedef Size_<float>      Size2f; //float 형
typedef Size_<double> Size2d;
typedef Size2i  Size;

평면 사각형 영역의 가로 크기와 세로 크기를 int 형으로 나타낼 경우 Size2i 클래스를 사용하고

실수 형태로 나타낼 경우 Size2f를 사용하면 됩니다.

OpenCV는 주로 사용하는 형태가 정수형이기 때문에 Size2i를 Size로 사용하고 있습니다.

 

Point_ 클래스 멤버함수

Size_ 클래스는 일반적인 4칙 연산을 수행할 수 있으며

Size_ 클래스가 가지는 고유의 멤버 함수를 다음과 같이 제공하고 있습니다.

 

  • area(  )  :  사각형 크기의 면적(width X height )을 return
  • empty(): 사각형의 크기가 유효하지 않으면(사이즈=0 이하) true를 return

 


int area4 = sz4.area();                    // area4 = 400

cout << "Area : " << area4 << endl;

 


이상으로 OpenCV의 Size_ 클래스에 대해 확인하였습니다.

2차원 좌표 평면의 사각형 크기를 나타내는  ( width, height  ) 를 표현하는데 유용한 클래스입니다.

도움이 되셨기를 바랍니다.

 

'IT' 카테고리의 다른 글

OpenCV 개발툴 - Visual Studio 2019  (0) 2023.05.17
OpenCV Point_ 클래스  (0) 2023.05.17
OpenCV 설치 및 빌드하기 (window버젼)  (0) 2023.04.12
OpenCV 빌드를 위한 CMake 설정  (0) 2023.04.11
Python URL 쉽게 다루기  (0) 2023.02.10