RotatedRect也是表示一个矩形框,但是与Rect不同的是,RotatedRect可以带倾斜角的矩形,如下图所示:

RotatedRect结构中包括三个变量:

Point2f center:为矩形的中心点位置

Size2f size:矩形框width和height

float angle:为左上角与X轴夹角。与X轴的平行方向角度为0,逆时针旋转角度为负,顺时针旋转角度为正。当角度为0, 90, 180, 270,则和Rect一样

RotatedRect与其他数据结构不一样,数据类型都是固定的,没有其他数据类型。

Learning OpenCV3中指出了RotatedRect与Rect一个重要不同:

One very important difference between cv::RotatedRect and cv::Rect is the convention that a cv::RotatedRect is located in "space" relative to its center, while the cv::Rect is located relative to its upper-left corner.

RotatedRect类

RotatedRect类定义如下:

使用总结如下:

Medthod Description
RotatedRect() 默认构造函数
 RotatedRect(const Point2f& center, const Size2f& size, float angle)

带参数构造函数:

center:为矩形中心位置

size:为矩形宽度和高度

angle:为与x轴夹角

RotatedRect(const Point2f& point1, const Point2f& point2, const Point2f& point3)

带参数构造函数:

根据矩形框的三个点确定一个RotatedRect

point1、point2、point3矩形三个点

void points(Point2f pts[])  返回矩阵的四个角点的左边,顺序为:bottomLeft, topLeft, topRight, bottomRight.
Rect boundingRect()  返回能够包含旋转矩形框的最小矩形,返回的是Rect没有带角度
Rect_<float> boundingRect2f()  返回能够包含旋转矩形框的最小矩形,返回的是Rect没有带角度,其数据类型为float
Point2f center 矩形中心点位置
Size2f size 矩形的宽度和高度
float angle 矩形夹角

来自于opencv官网的RotatedRect用例:https://docs.opencv.org/3.2.0/db/dd6/classcv_1_1RotatedRect.html#ae1be388780b8d5faf450be18cbbf30f1

#include <stdio.h>
#include "opencv2/opencv.hpp"using namespace cv;void main()
{Mat image(200, 200, CV_8UC3, Scalar(0));RotatedRect rRect = RotatedRect(Point2f(100, 100), 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, 255, 0));Rect brect = rRect.boundingRect();rectangle(image, brect, Scalar(255, 0, 0));imshow("rectangles", image);waitKey(0);}

运行结果:

RotatedRect没有对operator进行重构,不支持+,-,*,/以及&,|等操作符

OpenCV中基本数据结构(5)_RotatedRect相关推荐

  1. OPENCV中图像数据结构及其转化

    OPENCV中图像数据结构及其转化 1. IplImage 它是openCV库中表示图像的结构体. 初始化: cvLoadImage(),cvCreateImage() 访问元素:[行指针] b = ...

  2. OPENCV中的数据结构总结

    最近在写自己的算法,其实就是对一些传统算法的改进.传统算法可以参考opecv的源代码.在阅读源代码的过程中,我慢慢领会到了opencv的强大之处,并不是因为它实现了各种算法,而是在于它对于基本数据结构 ...

  3. OpenCV中的数据结构

    首先介绍2维点对Point_,它的是一个模板类.我们可以直接访问数据成员x,y.它不仅定了+.-.==.!=这4个基本的操作,还定义了点乘.叉乘等操作.特别的这个类还提供了inside函数来判断一个点 ...

  4. OpenCV中基本数据结构(4)_Rect

    Rect数据结构经常是在OpenCV中被用来表示为一个矩形尺寸,其成员包括x,y, width,height,其中x和y分别表示矩形框的左上角的起始点坐标,width和height分别表示宽和高. R ...

  5. OpenCV中基本数据结构(1)_Point

    为了便于对一些常见的数据进行操作,OpenCV定义了一些常见的数据结构(Point ,Scalar等),以方便后续对数据算法的实现,主要分为basic data type.helper objects ...

  6. OpenCV中基本数据结构(8)_Complex

    Complex为OpenCV中的复数表示类,与STL 中的complex类似但是不一样,两者可以互换,与STL的complex最大的不同是,STL中获取到实部和虚部的值 分别使用real()和imag ...

  7. OpenCV中基本数据结构(6)_Matx

    Matx为OpenCV轻量级的矩阵,被称为fixed matrix classes,意思是每个矩阵的大小都是固定的,主要是应对矩阵数据比较小的场景,最新的版本4.0不超过6*6大小的矩阵,旧版本一般不 ...

  8. OpenCV中基本数据结构(7)_Vec

    Vec系列数据结构是Matx的一个派生类,其矩阵的行的大小永远固定为一行,列大小从1到6不等,可以认为类似与C++ vector,但与C++ 的vector又有很大不同,,以下不同来自于一段技术博客, ...

  9. OpenCV中Mat数据结构使用举例

    #include "stdafx.h" #include <string> #include <iostream> #include <opencv2 ...

最新文章

  1. MarkdownView:Markdown 文档预览视图组件
  2. (转)java DecimalFormat用法
  3. 那传说中的P、NP以及NPC问题
  4. web服务器 字体.svg/.woff/.woff2 404错误 解决方案
  5. 【备忘】conda环境常用配置命令
  6. cp和scp复制命令
  7. Cinemachine教程 | Unity中如何快速制作相机切换动画?
  8. Adobe正式在中国市场推出Creative Cloud创意应用软件
  9. Spark-生产案例
  10. C语言:求矩阵非对角线元素的和
  11. WordPress主题 Market 多用途,灵活,类似(ThemeForest)高级数码交易市场主题
  12. Android项目中加入弹幕功能
  13. Linux下的常用命令(干货)
  14. 神奇宝贝计算机游戏程序设计,精灵宝贝神奇宝贝
  15. php程序员述职材料_php程序员述职报告
  16. 第一次使用Eclipse:编写简单的Java小程序
  17. (NO.00005)iOS实现炸弹人游戏(十):游戏主角(三)
  18. Android SVGA动画
  19. svg转换png格式怎么转
  20. JavaScript实现双色球机选逻辑错误与正确的算法

热门文章

  1. Jeecg-Boot 快速开发平台,前后端分离—开发环境搭建
  2. JEECG第二期深入使用培训(报名截止2014-06-21)
  3. Accept-Encoding
  4. Java描述设计模式(11):观察者模式
  5. imagej之Python脚本
  6. Keras实现LeNet-5网络,与可视化网络
  7. Tyvj P1463 智商问题 分块
  8. java 多线程同步
  9. linux的日志系统,Linux上的日志系统
  10. C语言——冒泡排序法