首页 > 其他分享 >OpenCV结构分析与形状描述符(20)计算一个包围给定点集的最小外接圆函数minEnclosingCircle()的使用

OpenCV结构分析与形状描述符(20)计算一个包围给定点集的最小外接圆函数minEnclosingCircle()的使用

时间:2024-09-11 13:51:56浏览次数:10  
标签:minEnclosingCircle 20 back Point2f 外接圆 points radius cv

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

算法描述

找到一个包围二维点集的最小面积的圆。

该函数使用迭代算法来寻找一个二维点集的最小外接圆。这意味着函数将会通过反复逼近的过程来计算出能够包围所有给定点且面积最小的圆。

minEnclosingCircle 是 OpenCV 库中的一个函数,用于计算一个包围给定点集的最小外接圆。这个函数非常有用,尤其是在计算机视觉和图像处理中,当需要找到一组点的几何中心及其覆盖半径时。

函数原型

void cv::minEnclosingCircle	
(
	InputArray 	points,
	Point2f & 	center,
	float & 	radius 
)		

参数

  • 参数points 输入的二维点向量,存储在 std::vector<> 或 Mat 中。
  • 参数center 输出的圆的中心。
  • 参数radius 输出的圆的半径。

代码示例

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

int main()
{
    // 创建一个空白的图像
    cv::Mat image = cv::Mat::zeros( 300, 300, CV_8UC3 );

    // 构造一个包含多个点的向量
    std::vector< cv::Point2f > points;
    points.push_back( cv::Point2f( 100, 100 ) );
    points.push_back( cv::Point2f( 200, 100 ) );
    points.push_back( cv::Point2f( 150, 150 ) );
    points.push_back( cv::Point2f( 100, 200 ) );
    points.push_back( cv::Point2f( 200, 200 ) );

    // 定义输出变量
    cv::Point2f center;
    float radius;

    // 计算最小外接圆
    cv::minEnclosingCircle( points, center, radius );

    // 绘制点集
    for ( const auto& pt : points )
    {
        cv::circle( image, pt, 3, cv::Scalar( 0, 255, 0 ), -1 );  // 绘制绿色的小圆圈表示点
    }

    // 绘制最小外接圆
    cv::circle( image, center, static_cast< int >( radius ), cv::Scalar( 0, 0, 255 ), 2 );  // 绘制红色的外接圆

    // 显示图像
    cv::imshow( "Min Enclosing Circle", image );
    cv::waitKey( 0 );

    return 0;
}

运行结果

在这里插入图片描述

标签:minEnclosingCircle,20,back,Point2f,外接圆,points,radius,cv
From: https://blog.csdn.net/jndingxin/article/details/142137396

相关文章

  • 2024.08.28蚂蚁
    1.小苯买东西小苯看中了一件价值为p元的物品,他手里有1个“打折券"和1个“立减券”。两种优惠券可以都用在物品上,且使用顺序也是任意的。两种优惠券分别以整数x和y的方式给出。打折券:如果当前物品价格为p,使用后,物品价格变为:x·p/100上取整。立减券:如果当前物品价格为P,使用后......
  • Windows Server 2022 rdp
    继续水一篇:2022废弃了xddm转而使用wddm,rdp的渲染有比较大的变化。高版本的unreal又需要2022支持,被迫走上魔改windows以提升2022rdp环境下抓屏帧数的道路。测试代码来自https://github.com/robmikh/Win32CaptureSample,只手动添加了输出fps逻辑。patchwindows后能在[60,90]......
  • 会声会影2024软件免费版无需激活永久免费
    嘿,亲爱的影像爱好者们!......
  • 会声会影2024中文免费版下载-正版下载-永久免费使用
    各位亲爱的朋友们,今天我要向大家介绍一款非常棒的视频编辑软件——会声会影2024。这可不是一般的软件哦,它可是视频编辑界的翘楚,拥有许多令人惊叹的新功能。让我们来看看会声会影2024的特点。这款软件具有强大的视频剪辑、特效制作和音频处理功能,可以让你轻松打造出专业级别的......
  • 会声会影2024破解版安装包,亲测可用
    亲爱的家人们!今天,我带来了一个让视频制作爱好者心跳加速的好消息——会声会影2024终于来了!......
  • CSP-S 2023 游记
    在CSP-S2024来临之际,补一下CSP-S2023游记CSP-S开题顺序:T1+T2+T4+T3时间分配:T130min,T21h,T42h,T330min场上即兴考试思路:快速切T1,死磕T2(没想到1h就想到了),接着T4试着AC(然后就深陷其中,红温了),T3场上忘了。T1正常发挥,T2其实也挺谁的,想到\(O(n^2)\)做法就一个......
  • NOIP 2018 普及组初赛试题及解析(第三部分:阅读程序写结果(1-4))
    阅读程序一代码:#include<stdio.h>charst[100];intmain(){scanf("%s",st);for(inti=0;st[i];++i){if('A'<=st[i]&&st[i]<='Z')st[i]+=1;}printf("%s\n&quo......
  • NOIP 2018 普及组初赛试题及解析(第二部分:问题求解(1-2))
    分享代码:#include<iostream>usingnamespacestd;//函数用于检查一个数是否包含数字8boolcontainsEight(intnum){while(num>0){if(num%10==8)returntrue;//如果当前个位数是8,则返回truenum/=10;//去掉当前......
  • 会声会影2024汉化破解版安装教程(带安装包)
    嘿!亲爱的小红书的朋友们,今天我要来给大家安利一款超酷的神器——会声会影2024!......
  • 会声会影2024中文/英文破解版一键安装包下载
    安利!会声会影2024——视频编辑的新宠......