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

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

算法描述

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

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

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

函数原型

cpp 复制代码
void cv::minEnclosingCircle	
(
	InputArray 	points,
	Point2f & 	center,
	float & 	radius 
)		

参数

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

代码示例

cpp 复制代码
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;
}

运行结果

相关推荐
火山引擎开发者社区5 小时前
火山AgentPlan/CodingPlan同步上线GLM-5.2
人工智能
冬奇Lab6 小时前
Skill 系列(05):Skill 工作流串联——4 种模式实测,并发加速 1.5x
人工智能·开源
冬奇Lab6 小时前
每日一个开源项目(第141篇):hiring-agent - HackerRank 开源了他们的简历评分系统,你的简历能得几分?
人工智能·面试·开源
甲维斯6 小时前
又升级咯!坦克大战2026,科技与复古并存!
前端·人工智能·游戏开发
姗姗来迟了8 小时前
用React Hook封装AI对话状态
人工智能
Goodbye9 小时前
从 Token 到 Embedding:LLM 核心基础深度解析
javascript·人工智能
阿瑞IT9 小时前
AI Agent 在甘特计划变更场景中的动态响应工程实践
人工智能
用户938515635079 小时前
工具调用背后:LLM 如何突破“缸中大脑”,操控真实世界?
javascript·人工智能