用c++实现绘制rotatedRect
时间: 2023-11-20 20:07:00 浏览: 114
好的,以下是C语言中绘制RotatedRect的代码:
```
#include <stdio.h>
#include <opencv2/opencv.hpp>
using namespace cv;
int main()
{
Mat image = imread("test.jpg");
RotatedRect rRect = RotatedRect(Point2f(150,150), Size2f(100,50), 30);
Point2f vertices[4];
rRect.points(vertices);
for (int i = 0; i < 4; i++)
line(image, vertices[i], vertices[(i+1)%4], Scalar(0,0,255), 2);
imshow("RotatedRect", image);
waitKey(0);
return 0;
}
```
这个程序会加载一张名叫test.jpg的图片,并在其中绘制一个旋转矩形RotatedRect。通过指定中心点、大小和旋转角度来创建RotatedRect对象,然后通过调用points方法获取矩形四个顶点,并使用line函数连接这些顶点来绘制矩形。最后通过imshow函数显示图片,并通过waitKey等待用户按下键盘。
相关问题
opencv已知RotatedRect,使用C++绘制
可以使用OpenCV提供的cv::RotatedRect的成员函数来获取矩形的四个顶点,然后使用cv::line函数绘制。
以下是示例代码:
```
#include <opencv2/opencv.hpp>
#include <iostream>
using namespace cv;
using namespace std;
int main()
{
// 创建一个RotatedRect
RotatedRect rect(Point2f(100, 100), Size2f(200, 100), 30);
// 获取矩形的四个顶点
Point2f vertices[4];
rect.points(vertices);
// 创建画布并绘制
Mat canvas(300, 300, CV_8UC3, Scalar(255, 255, 255));
for (int i = 0; i < 4; i++)
{
line(canvas, vertices[i], vertices[(i + 1) % 4], Scalar(0, 0, 255), 2);
}
// 显示结果
imshow("RotatedRect", canvas);
waitKey();
return 0;
}
```
运行结果如下图所示:

怎么用cluster.direct = yaw;以及opencv c++库绘制旋转的框
要使用`cluster.direct = yaw`来表示聚类的旋转角度,其中`yaw`是一个表示旋转角度的变量。
然后,利用OpenCV C++库来绘制旋转后的框,需要进行以下步骤:
1. 定义一个旋转矩形对象:
```cpp
cv::RotatedRect rotatedRect;
```
2. 设置旋转矩形的中心点坐标和尺寸:
```cpp
rotatedRect.center = cv::Point2f(cluster.posX, cluster.posY); // 设置中心点坐标
rotatedRect.size = cv::Size2f(cluster.width, cluster.length); // 设置尺寸
```
3. 设置旋转矩形的旋转角度:
```cpp
rotatedRect.angle = -cluster.direct; // 设置旋转角度
```
这里需要注意的是,OpenCV中的旋转角度是逆时针方向的,而聚类的旋转角度可能是顺时针方向的,所以需要取负值。
4. 绘制旋转后的框:
```cpp
cv::Point2f vertices[4];
rotatedRect.points(vertices);
for (int i = 0; i < 4; i++) {
cv::line(showCloudImage, vertices[i], vertices[(i + 1) % 4], cv::Scalar(255, 0, 255), 1, 8, 0);
}
```
通过调用`rotatedRect.points(vertices)`可以获取旋转后框的四个顶点坐标,然后使用`cv::line`函数绘制框的四条边。
请根据实际情况修改代码中的变量和坐标系转换,以及在适当位置添加代码。
阅读全文
相关推荐
















