首页 > 其他分享 >OpenCV结构分析与形状描述符(19)查找二维点集的最小面积外接旋转矩形函数minAreaRect()的使用

OpenCV结构分析与形状描述符(19)查找二维点集的最小面积外接旋转矩形函数minAreaRect()的使用

时间:2024-09-11 13:52:37浏览次数:10  
标签:矩形 19 back Point2f OpenCV points push 点集 cv

  • 操作系统:ubuntu22.04
  • OpenCV版本:OpenCV4.9
  • IDE:Visual Studio Code
  • 编程语言:C++11

算法描述

找到一个包围输入的二维点集的最小面积旋转矩形。

该函数计算并返回指定点集的最小面积边界矩形(可能是旋转的)。开发者需要注意的是,当数据接近包含的 Mat 元素边界时,返回的 RotatedRect 可能会包含负索引。

minAreaRect 是 OpenCV 库中的一个函数,它用于查找一个给定的二维点集(通常是一个轮廓)的最小面积外接旋转矩形。这个矩形不同于标准的最小包围盒(即由 cv::boundingRect 得到的直立矩形),它可以旋转任意角度以适应轮廓的形状,从而达到最小面积的效果。
使用场景
minAreaRect 常用于物体识别与定位,特别是在需要处理旋转情况下的物体检测时。它可以帮助你找到一个物体的精确位置和方向,这对于机器人视觉、工业检测等领域特别有用。

函数原型

RotatedRect cv::minAreaRect	
(
	InputArray 	points
)	

参数

  • 参数points 输入的二维点向量,存储在 std::vector<> 或 Mat 中。

返回值

  • RotatedRect: 返回的是一个 RotatedRect 对象,它包含了最小外接矩形的信息。RotatedRect 包括三个属性:
    • center (矩形的中心点坐标)
    • size (矩形的宽度和高度)
    • angle (矩形的旋转角度)

代码示例

#include <iostream>
#include <opencv2/opencv.hpp>
#include <vector>

using namespace cv;
int main()
{
    // 创建一个空白图像
    Mat img( 400, 400, CV_8UC3, Scalar( 255, 255, 255 ) );

    std::vector< cv::Point2f > points;
    points.push_back( Point2f( 100, 100 ) );
    points.push_back( Point2f( 125, 125 ) );
    points.push_back( Point2f( 75, 125 ) );
    points.push_back( Point2f( 50, 150 ) );
    points.push_back( Point2f( 150, 150 ) );
    points.push_back( Point2f( 200, 250 ) );
    points.push_back( Point2f( 100, 250 ) );
    points.push_back( Point2f( 150, 300 ) );
    points.push_back( Point2f( 125, 275 ) );
    points.push_back( Point2f( 175, 275 ) );

    // 绘制原始点
    for ( const auto& pt : points )
    {
        circle( img, pt, 5, Scalar( 0, 255, 0 ), -1 );
    }

    // 获取最小面积外接矩形
    cv::RotatedRect rect = cv::minAreaRect( points );

    // 绘制最小面积外接矩形
    cv::Point2f vertices[ 4 ];
    rect.points( vertices );
    for ( int i = 0; i < 4; ++i )
    {

        cv::line( img, vertices[ i ], vertices[ ( i + 1 ) % 4 ], cv::Scalar( 0, 255, 0 ), 2 );
    }

    // 显示图像
    cv::imshow( "Image with Min Area Rect", img );
    cv::waitKey( 0 );

    return 0;
}

运行结果

在这里插入图片描述

标签:矩形,19,back,Point2f,OpenCV,points,push,点集,cv
From: https://blog.csdn.net/jndingxin/article/details/142137059

相关文章

  • OpenCV结构分析与形状描述符(20)计算一个包围给定点集的最小外接圆函数minEnclosingCirc
    操作系统:ubuntu22.04OpenCV版本:OpenCV4.9IDE:VisualStudioCode编程语言:C++11算法描述找到一个包围二维点集的最小面积的圆。该函数使用迭代算法来寻找一个二维点集的最小外接圆。这意味着函数将会通过反复逼近的过程来计算出能够包围所有给定点且面积最小的圆。mi......
  • jsp潮鞋商城系统的设计与实现8192n
    jsp潮鞋商城系统的设计与实现本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表项目功能用户,商品分类,商品信息,品牌开题报告内容一、研究背景与意义随着互联网技术的飞速发展和电子商务的普及,网络购物已成......
  • 基于Python的基层派出所与警务站警情管理系统-附源码14419
    摘 要基层派出所与警务站作为社会治安的坚实守护者,日常承担着繁重的警情处理工作。为了提升警务工作的信息化水平,优化警情管理流程,我们精心打造了这款基层派出所与警务站警情管理系统。该系统基于Django框架开发,旨在通过智能化、自动化的手段,实现警情的快速录入、高效处理......
  • 基于ssm的家庭幼儿离校教育系统的设计与实现-附源码13819
    目 录1绪论1.1研究背景与意义1.2国内外现状1.3论文结构与章节安排2 家庭幼儿离校教育系统分析2.1可行性分析2.1.1技术可行性分析2.1.2 经济可行性分析2.1.3法律可行性分析2.2系统功能分析2.2.1功能性分析2.2.2非功能性分析2.3 系统用例......
  • [极客大挑战 2019]PHP
    1、页面提示有备份文件,使用kali中命令dirsearch扫描2、我的字典不够,扫不出,看了别人的扫出来是www.zip3、访问www.zip之后会下载压缩包,里面有三个php文件4、class.php<?phpinclude'flag.php';error_reporting(0);className{private$username='nonono';......
  • OpenCV结构分析与形状描述符(17)判断轮廓是否为凸多边形的函数isContourConvex()的使用
    操作系统:ubuntu22.04OpenCV版本:OpenCV4.9IDE:VisualStudioCode编程语言:C++11算法描述测试轮廓的凸性。该函数测试输入的轮廓是否为凸的。轮廓必须是简单的,即没有自相交。否则,函数的输出是不确定的。cv::isContourConvex函数是OpenCV提供的一个用于判断轮廓是否......
  • OpenCV结构分析与形状描述符(16)判断两个凸多边形是否相交的函数intersectConvexConvex(
    操作系统:ubuntu22.04OpenCV版本:OpenCV4.9IDE:VisualStudioCode编程语言:C++11算法描述查找两个凸多边形的交集。intersectConvexConvex是一个在OpenCV中用于判断两个凸多边形是否相交的函数。此函数可以帮助我们确定两个二维凸多边形是否在平面上有重叠区域。函......
  • OpenCV(低通滤波、高通滤波)
    目录1.低通滤波(Low-PassFiltering)1.1概念1.2作用1.3常见类型1.4应用场景1.5频域中的表现2.高通滤波(High-PassFiltering)2.1概念2.2作用2.3常见类型2.4应用场景2.5频域中的表现3.频域滤波的操作过程4.高通滤波与低通滤波的对比5.总结在图像处理领域,低通滤波和高......
  • 【自用19.3】C++构造函数复盘
    定义一个“人”类#include<iostream>#include<Windows.h>#include<string>usingnamespacestd;//定义一个“人类”classHuman{public://公有的,对外的 voideat();//方法,“成员函数” voidsleep(); voidplay(); voidwork(); stringgetName(); in......
  • [COCI2019-2020#5] Zapina
    [COCI2019-2020#5]Zapina题意有\(n\)个不同的人和\(n\)道不同的题。第\(i\)个人开心当且仅当他被分配到\(i\)道题。求让至少一个人开心的分配方案数。、思路1定义\(dp_{i,j}\)表示前\(i\)个人发\(j\)道题,没人开心的方案数。答案等于\(n^n-dp_{n,n}\)。\[d......