OpenCV-绘制旋转矩形

简介: OpenCV-绘制旋转矩形

功能函数

// 绘制旋转矩形
void DrawRotatedRect(cv::Mat mask,const cv::RotatedRect &rotatedrect,const cv::Scalar &color,int thickness, int lineType)
{
    // 提取旋转矩形的四个角点
  cv::Point2f ps[4];
  rotatedrect.points(ps);
    // 构建轮廓线
  std::vector<std::vector<cv::Point>> tmpContours;    // 创建一个InputArrayOfArrays 类型的点集
  std::vector<cv::Point> contours;
  for (int i = 0; i != 4; ++i) {
    contours.emplace_back(cv::Point2i(ps[i]));
  }
  tmpContours.insert(tmpContours.end(), contours);
    // 绘制轮廓,即旋转矩形
  drawContours(mask, tmpContours, 0, color,thickness, lineType);  // 填充mask
}

测试代码

#include <iostream>
#include <opencv2/opencv.hpp>
using namespace std;
using namespace cv;
void DrawRotatedRect(cv::Mat mask, const cv::RotatedRect &rotatedrect, const cv::Scalar &color,int thickness, int lineType);
int main()
{
  cv::Mat src = imread("test.jpg");
  cv::Mat result = src.clone();
  cv::RotatedRect rorect(cv::Point(src.cols / 2, src.rows / 2), cv::Size(1000, 800), 50);
  DrawRotatedRect(result, rorect, cv::Scalar(0, 255, 255), 5,16);
  imshow("original", src);
  imshow("result", result);
  waitKey(0);
  return 0;
}
// 绘制旋转矩形
void DrawRotatedRect(cv::Mat mask,const cv::RotatedRect &rotatedrect,const cv::Scalar &color,int thickness, int lineType)
{
    // 提取旋转矩形的四个角点
  cv::Point2f ps[4];
  rotatedrect.points(ps);
    // 构建轮廓线
  std::vector<std::vector<cv::Point>> tmpContours;    // 创建一个InputArrayOfArrays 类型的点集
  std::vector<cv::Point> contours;
  for (int i = 0; i != 4; ++i) {
    contours.emplace_back(cv::Point2i(ps[i]));
  }
  tmpContours.insert(tmpContours.end(), contours);
    // 绘制轮廓,即旋转矩形
  drawContours(mask, tmpContours, 0, color,thickness, lineType);  // 填充mask
}

测试效果

      绘制旋转矩形首先需要得到旋转矩形的位置坐标,我经常配合cv::minAreaRect函数使用;得到坐标信息后,结合绘制轮廓线的drawContours函数,即可实现。


      如果文章帮助到你了,可以点个赞让我知道,我会很快乐~加油!

相关文章
|
7月前
|
API C++ 计算机视觉
【opencv3】鼠标框选矩形并显示当前像素点坐标和矩形中心点坐标C++
【opencv3】鼠标框选矩形并显示当前像素点坐标和矩形中心点坐标C++
|
7月前
|
计算机视觉 Python
OpenCV中线段、矩形、圆形、多边形的讲解与绘制实战(附Python源码)
OpenCV中线段、矩形、圆形、多边形的讲解与绘制实战(附Python源码)
157 0
|
6月前
|
存储 Cloud Native Linux
OpenCV图像翻转和旋转
OpenCV图像翻转和旋转
|
计算机视觉
OpenCV-矩形边框cv::boundingRect
OpenCV-矩形边框cv::boundingRect
114 0
|
7月前
|
计算机视觉
OpenCV(三十四):轮廓外接最大、最小矩形和多边形拟合
OpenCV(三十四):轮廓外接最大、最小矩形和多边形拟合
490 0
|
7月前
|
监控 API 计算机视觉
OpenCV这么简单为啥不学——1.6、图像旋转与翻转(rotate函数、imutils环境安装、imutils任意角度旋转)
OpenCV这么简单为啥不学——1.6、图像旋转与翻转(rotate函数、imutils环境安装、imutils任意角度旋转)
82 0
|
7月前
|
计算机视觉 Python
OpenCV中图像的平移、旋转、倾斜、透视的讲解与实战(附Python源码)
OpenCV中图像的平移、旋转、倾斜、透视的讲解与实战(附Python源码)
367 0
|
7月前
|
计算机视觉 开发者 Python
OpenCV中图像的缩放与旋转讲解及实战演示(附Python源码)
OpenCV中图像的缩放与旋转讲解及实战演示(附Python源码)
159 0
|
7月前
|
计算机视觉
OpenCV(十三):图像中绘制直线、圆形、椭圆形、矩形、多边形和文字
OpenCV(十三):图像中绘制直线、圆形、椭圆形、矩形、多边形和文字
89 0
|
数据安全/隐私保护 计算机视觉
opencv边缘检测加提取(圆形和矩形)
opencv边缘检测加提取(圆形和矩形)
70 0