RotatedRect 클래스란
회전된 사각형을 표현하는 클래스이다.
멤버변수로 center, size, angle을 가진다.
center : 회전된 사각형의 중심 좌표를 나타냄
size : 사각형의 가로 및 세로 크기를 나타냄
angle : 회전 각도 정보를 나타냄
class RotatedRect
{
public:
RotatedRect(); // 기본 생성자로 모든 멤버 변수를 0으로 초기화
RotatedRect(const Point2f& _center, const Size2f& _size, float _angle); // (_center, _size, _angle)을 인자로 받는 생성자로 center = _center, size = _size, angle = _angle 으로 초기화
RotatedRect(const Point2f& point1, const Point2f& point2, Point2f& point3); // (point1, point2, point3)을 인자로 받는 생성자로 인자로 전달된 세 점은 회전된 사각형의 세 꼭지점 좌표를 나타냄
void points(Point2f pts[]) const; // RotatedRect::points() 멤버 함수는 회전된 사각형의 네 꼭지점 좌표를 pts 인자에 저장
Rect boundingRect() const; // RotatedRect::boudingRect() 멤버 함수는 회전된 사각형을 포함하는 최소 크기의 사각형 정보를 반환 (정수 단위)
Rect_<float> boudingRect2f() const; // RotatedRect::boudingRect2f() 멤버 함수는 회전된 사각형을 포함하는 최소 크기의 사각형 정보 반환
Point2f center; // 사각형의 중심 좌표
Size2f size; // 사각형의 크기
float angle; // 시계 방향 회전 각도
};
RotatedRect 클래스는 다른 클래스와 달리 템플릿 클래스가 아니며, 모든 정보를 float 자료형을 사용하여 표현한다.
중심점 좌표는 Point2f 클래스를 사용하고, 크기 정보는 Size2f 클래스를 사용한다. 회전 각도는 float 자료형을 사용한다.
RotatedRect 클래스 코드 작성 방법
RotatedRect rr1(Point2f(40, 30), Size2f(40, 20), 30.f);
중심 좌표가 (40, 30) 이며 크기는 40 x 20 시계 방향으로 30°만큼 회전된 사각형 객체이다.
회전된 사각형 좌표 확인 방법
RotatedRect로 생성된 사각형 객체가 회전된 후 네 꼭지점 좌표를 알아야 할 때
RotatedRect::points() 멤버 함수를 사용하면 되고, 크기가 4인 Point2f 자료형을 배열 이름으로 전달한다.
Point2f pts[4];
rr1.points(pts);
RotatedRect::points() 함수는 사각형의 좌측 하단 꼭지점부터 시계 방향으로 좌표를 추출한다.
pts[0] = 좌측 하단
pts[1] = 좌측 상단
pts[2] = 우측 상단
pts[3] = 우측 하단
네 꼭지점 좌표가 pts 배열에 저장된다.
바운딩 박스 정보 출력
바운딩 박스(bounding box)란 특정 객체를 감싸는 최소 크기의 사각형을 말한다.
경우에 따라서 회전된 사각형을 감싸는 최소 크기의 정보가 필요하다.
회전된 사각형의 바운딩 박스를 출력하려면 RotatedRect::boudingRect() 멤버 함수를 사용한다.
Rect br = rr1.boundingRect();
'DevelopmentTool > OpenCV' 카테고리의 다른 글
[OpenCV] String 클래스 (0) | 2022.11.17 |
---|---|
[OpenCV] Range 클래스 (0) | 2022.11.17 |
[OpenCV] Rect_ 클래스 (0) | 2022.11.16 |
[OpenCV] Size_ 클래스 (0) | 2022.11.16 |
[OpenCV] Point_ 클래스 (0) | 2022.11.16 |