본문 바로가기
C++/OpenCV

[OpenCV]RotatedRect 클래스

by usang0810 2019. 4. 10.

이름그대로 회전된 사각형을 나타내기 위한 클래스이다.

매개변수로는 중심점, 크기 회전각도를 가진다

(point(x, y), size(w, h), angle)로 사용하면 될 듯 하다

회전각도는 3시 방향이 0도이며 양수가 시계방향, 음수가 반시계방향이다.

클래스의 메소드로는 line(), circle(), rectangle(), imshow() 등이 있다.

 

#include <opencv2\opencv.hpp>

using namespace cv;
using namespace std;

int main() {

	for (int deg = 3600; deg > 0; deg += 1) {
		Mat image(700, 700, CV_8UC1, Scalar(255));
		Point2f center(250, 200), pts[4];
		Size2f size(300, 100);
		RotatedRect rot_rect(center, size, deg); // constant is angle

		Rect bound_rect = rot_rect.boundingRect();
		rectangle(image, bound_rect, Scalar(0), 1);
		circle(image, rot_rect.center, 1, Scalar(0), 2);
		rot_rect.points(pts);
		for (int i = 0; i < 4; i++) {
			circle(image, pts[i], 14, Scalar(0), 1); // 꼭지점 생성, 세번째 매개변수는 원의 크기
			line(image, pts[i], pts[(i + 1) % 4], Scalar(0), 2); // 라인 생성, 다섯번째 매개변수는 라인의 두께
		}

		imshow("회전사각형", image);
		waitKey(10);
	}

	return 0;
	
}

 

 

 

 

 

 

 

 

 

 

 

 

 

boundingRect()메소드를 통해 rot_rect를 포함하는 사각형을 만들고

rectangle()메소드를 통해 이미지화하고 circle()메소드를 통해 rot_rect의 center에 원을 그린다.

rot_rect의 꼭지점의 좌표들을 pts에 담고 pts를 이용하여 꼭지점에 circle()을 이용하여 원을 그리고 lien()을 이용하여 꼭지점들을 잇는 선을 그린다.

 

 

응용문제

2019/03/15 - [C++/Opencv] - 두개의 회전사각형을 포함하는 bounding 사각형

'C++ > OpenCV' 카테고리의 다른 글

[OpenCV]vector 클래스  (0) 2019.04.11
[OpenCV]Mat_ 클래스와 Matx 클래스  (0) 2019.04.10
[OpenCV]Mat 클래스  (0) 2019.04.10
OpenCV의 기본 자료 구조  (0) 2019.04.10
두개의 회전사각형을 포함하는 bounding 사각형  (0) 2019.03.15