이름그대로 회전된 사각형을 나타내기 위한 클래스이다.
매개변수로는 중심점, 크기 회전각도를 가진다
(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()을 이용하여 꼭지점들을 잇는 선을 그린다.
응용문제
'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 |