opencv c++画旋转矩形
时间: 2024-12-21 16:30:54 浏览: 5
python opencv实现旋转矩形框裁减功能
OpenCV(Open Source Computer Vision Library)是一个广泛使用的计算机视觉库,提供了一系列强大的图像处理和计算机视觉算法。如果你想在C++中使用OpenCV绘制旋转矩形,你需要用到`cv::RotatedRect`类以及相关的绘图函数。
以下是一个简单的示例,展示了如何创建一个旋转矩形并将其画在图片上:
```cpp
#include <opencv2/opencv.hpp>
#include <opencv2/highgui/highgui.hpp>
int main() {
// 创建一个蓝色的空白图片
cv::Mat img = cv::Mat::zeros(500, 500, CV_8UC3, cv::Scalar(255, 0, 0));
// 定义旋转矩形中心点、半径和旋转角度
cv::Point2f center(250, 250);
float angle = 45; // 逆时针旋转45度
float width = 150;
float height = width;
// 使用cv::getRotationMatrix2D和warpAffine计算旋转矩阵并应用
cv::Mat rotation_matrix = cv::getRotationMatrix2D(center, angle, 1);
cv::Mat rotated_img;
cv::warpAffine(img, rotated_img, rotation_matrix, img.size());
// 绘制原始矩形和旋转后的矩形
cv::rectangle(img, cv::Point(center.x - width/2, center.y - height/2),
cv::Point(center.x + width/2, center.y + height/2),
cv::Scalar(0, 255, 0), 2); // 原始绿色矩形
cv::rectangle(rotated_img, cv::Point(center.x - width/2, center.y - height/2),
cv::Point(center.x + width/2, center.y + height/2),
cv::Scalar(0, 0, 255), 2); // 旋转后红色矩形
// 显示原图和旋转后的图
cv::imshow("Original Rectangle", img);
cv::imshow("Rotated Rectangle", rotated_img);
// 等待用户按键,然后关闭所有窗口
cv::waitKey(0);
cv::destroyAllWindows();
return 0;
}
```
在这个例子中,我们首先创建了一个蓝色的图片,然后定义了要旋转的矩形的位置、大小和旋转角度。接着计算旋转矩阵并应用到原始图片上,生成旋转后的图片。最后,我们在原图和旋转后的图上分别绘制了矩形,并显示出来。
阅读全文