30-凸包(Convex Hull)

什么是Convex Hull(凸包) 对于一个点集 ( S )(可以在二维平面、三维空间或更高维度中),其凸包 (ConvSConvS) 是包含 ( S ) 的最小凸集。换句话说,凸包是一个包含 ( S ) 的最小凸区域。 阅读详情

凸包(convex hull)

1、凸包概念;
2、API说明;
3、代码演示;
convex : 凸面的,凸出的,凸多变形的;
hull : 物体外壳;

凸包(convex hull)

1、凸包(convex hull):在一个多边形边缘或者内部任意两个点的连线都包含在多边形边界或者内部,正式定义为:包含点集合S中所有点的最小凸多边形称为凸包;

在这里插入图片描述
凸包和非凸包:
在这里插入图片描述

2、凸包是建立在轮廓提取的基础上,OpenCV中提供了2种凸包的实现算法,最常用的为:Graham扫描法;

Graham扫描算法

1、原理:
在这里插入图片描述
在这里插入图片描述
demo : 从Y方向最低点p0开始寻找,C点导致与下一点D的连线右转向,所以舍弃该点;

在这里插入图片描述

API

1、凸包API : convexHull()
参数:
points : 输入为轮廓检测发现的点
hull : 凸包;对于hull参数可以为std::vector,这是返回的是凸包点在原轮廓点集中的索引,当为std::vectorcv::Point时,表示的是凸包点的位置
clockwise : 默认为true , 顺时针方向扫描
returnPoints : 返回凸包点的个数,如果hull输入为vector<Point>向量,则自动忽略该值;
在这里插入图片描述

2、凸包是一种特殊的轮廓,OpenCV提供了快速进行图像开发的框架;l

使用步骤:

  1. 将图像从RGB图像转换为灰度图像;
  2. 再转换为二值图像(Canny边缘检测或者阈值处理转换为二值图像);
  3. 再通过发现轮廓找到候选点;
  4. 调用凸包API;
  5. 绘制显示;

Code

调试:设置断点,F10执行下一条语句;

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

using namespace std;
using namespace cv;

Mat src,src_gray, dst;
int threshold_value = 100;
int threshold_max = 255;

RNG rng(12345);  //定义一个随机数变量

const char *OUTPUT_WIN = "convex hull image";
const char *INPUT_WIN = "in
凸包, 概念 catalog凸包 凸包 通常上讲 平面上有很多的点, 用一个 皮筋 圈住 这所有的点, 此时这个 皮筋, 就是 这些点的 凸包 数学上讲 性质1: 凸包上, 任何一条边 他所在的直线 即为L, 则所有的点 都在直线L 的 同一侧 比如以凸包上的 AB边 为例, 所有的点: (要么在AB直线上) (要么都在同一侧比如以A->B这个方向来看, 都在该向量的 右侧) 性质2 (重点): 由于凸包是一个环, 存在(顺时针 和 逆时针) 两个方向, 不妨先统一规定下 方向, 比如以 顺时针来看. 阅读详情

相关推荐

ConvexHull-凸包-原理-代码实现

Andrew’s Monotone Chain 算法是一种更高效的凸包算法,其时间复杂度为 O(n log n)。该算法首先将所有点按 x 坐标排序,然后分别构建下凸包和上凸包,最后合并两者。在三维点云处理中,我们在使用算法一般会利用别人高效实现的方式,这里使用open3d库实现凸包算法。为了方便理解,我们现已二维数据进行测试。

u012901740的博客 2059

凸包(Convex Hull)算法详解:从几何原理到工程代码实现

在计算几何中,如何用最少的顶点包围一组离散点,是许多图形算法与工程应用共同面对的基础问题。凸包(Convex Hull)正是解决这类问题的核心结构,它通过构造一个最小的凸多边形,将全部点集包裹其中,广泛应用于点云轮廓提取、碰撞检测、最小外接矩形计算、图像轮廓分析以及聚类结果可视化等场景。从算法设计角度看,Graham扫描和Andrew单调链是两种最主流的实现方案:前者依赖极角排序与单调栈,后者仅需按坐标排序并分别构造上下凸壳,在数值稳定性与工程实践上更受青睐。理解凸包不仅能帮助开发者高效处理几何数据,还能为

weixin_27014595的博客 286

八、凸包计算convex_hull_object_model_3d

Halcon算子convex_hull_object_model_3d全面解析与工业应用指南。

学习笔记 171

英伟达笔试1

本文摘要: 使用NAND2门设计4位奇偶校验发生器,通过15个NAND2门实现4输入异或功能,分三级结构完成奇校验计算。 时序分析公式总结: 建立时间约束:T_cq + T_comb(max) + T_setup + T_skew ≤ T_clk 保持时间约束:T_cq + T_comb(min) + T_skew ≥ T_hold 提供了两段路径的具体时序检查公式和建立违规修复方法 分析32位粘滞累积寄存器Verilog代码: 功能:记录输入数据中出现过的所有1位 每个bit独立实现,复位清零,有效输入时

soulermax的博客 165

汽车零部件智能装配:C#+YOLOv8实现螺栓漏装检测与齿轮错位识别(附PLC通信与机械臂控制)

YOLOv8:小目标检测的最优解相比YOLOv7,YOLOv8的C2f特征融合网络对小目标(5-10mm螺栓)检测精度提升12%,且推理速度快8%;支持大输入尺寸(不显著增加耗时),可放大螺栓细节;官方提供yolov8n.pt(nano版),在边缘计算盒上能跑40+FPS,满足实时性。C#:工业软件的“兼容性核心”主流PLC(西门子S7-1200/1500)、机械臂(ABB、KUKA)的SDK多基于.NET开发,C#可直接调用,避免跨语言通信延迟;多线程管理成熟(Task。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 1146

cmu15445(2024fall) project 2

project 2比p1难度要更大,代码量更大且涉及的知识更多,实现中出现的bug更多,好在是最后全部解决了。我最大的收获在于对于多线程编程的理解更深入了,实际发现解决了多个多线程相关的bug,学会了更多多线程下debug的技巧方法,也见识了更多多线程的bug情况。在之后可以更系统的学习一下多线程编程。同时学会实现B+树也是需要掌握的基础。

Jerome_Yi的博客 1556

基于立创开源ESP32步进电机驱动板硬件设计与优化实践

本文详细介绍了基于立创开源平台的ESP32步进电机驱动板硬件设计与优化实践。重点解析了ESP32-PICO-D4与A4950驱动芯片的选型搭配、电源电路噪声隔离、PCB布局布线技巧以及保护电路设计,为开发者提供了从原理图到PCB的完整优化方案,有效提升驱动板的性能与稳定性。

7z8x2c4v6b9的博客 645

高分系列卫星轨道、传感器参数等信息

遥感卫星数据简介-高分系列

中遥科 3309

【系统架构设计师】论文:论虚拟现实技术的应用与发展

虚拟现实技术是当前科学研究的热点,同时也是国家大力支持发展的核心技术之一。所谓虚拟现实,就是通过计算机等虚拟手段来构造一个非常接近真实世界的虚拟环境,它主要体现在视觉、触觉、嗅觉等方面的逼真模拟来达到高度的沉浸性,也就是如我们通常所说的“身临其境”。

数据知道的博客 1万+

基于STM32L4XX 、HAL库的DRV8833RTYR步进电机驱动器驱动程序应用设计

/ 注:具体计算取决于你的定时器配置,例如 Period=1000, duty_cycle 0-100 -> compare_value = duty_cycle * 10。// 控制电机方向/停止/刹车。//================== 硬件引脚映射 (请根据实际电路修改) ==================

PP_Cottage的博客 180

无需SLAM建图,直接生成Gazebo仿真环境的二维代价地图的功能包pgm_map_creator适配ROS Noetic编译报错及解决方法

在ROS Noetic中,使用`pgm_map_creator`功能包直接生成Gazebo仿真环境的二维代价地图时,可能会遇到各种编译和运行错误。本篇博客详细解析了在适配ROS Noetic过程中常见的报错及其解决方法,包括Boost文件结构更新、C++版本兼容性、Gazebo函数名变更、链接库缺失以及protobuf文件加载错误。通过逐步排查和修改,如更换头文件路径、调整C++标准、更新CMakeLists.txt文件等,成功解决了这些问题,使得`pgm_map_creator`功能包能够顺利编译和运行。

慕羽★的博客 2261

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

上一篇: 29-轮廓发现
下一篇: 31-轮廓周围绘制矩形框和圆形框
hellohake
博客等级 码龄10年 4543粉丝 108原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值