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;
}

运行结果

相关推荐
Swaggy T26 分钟前
自动驾驶控制算法——纯跟踪法(Pure Pursuit)
人工智能·机器学习·自动驾驶
聚客AI1 小时前
智能体协同作战:实现工具调用成功率提升47%的架构奥秘
人工智能·pytorch·机器学习·语言模型·自然语言处理·chatgpt·gpt-3
TS的美梦2 小时前
scanpy单细胞转录组python教程(二):单样本数据分析之数据质控
人工智能·python·数据分析·单细胞转录组·scanpy
星夜Zn2 小时前
Nature论文-预测和捕捉人类认知的基础模型-用大模型模拟人类认知
论文阅读·人工智能·大语言模型·nature·认知建模·统一认知模型
胡乱编胡乱赢3 小时前
联邦学习之------VT合谋
人工智能·深度学习·机器学习·vt合谋
数据与人工智能律师3 小时前
刑法视野下的虚拟财产属性争议:法律风险与市场潜力解析
大数据·网络·人工智能·云计算·区块链
dundunmm3 小时前
【论文阅读】Deep Adversarial Multi-view Clustering Network
论文阅读·人工智能·深度学习·聚类·对抗网络·多视图聚类·深度多视图聚类
HuggingFace5 小时前
欢迎 GPT OSS —— 来自 OpenAI 的全新开放模型家族!
人工智能
不焦躁的程序员5 小时前
AI时代人人都要懂的概念-深度学习
人工智能·深度学习·神经网络
HeteroCat5 小时前
Agent进阶--各个知名大模型/智能体的提示词精华汇总
人工智能