OpenCV学习笔记(十八):凸包,最小包围区域算子:convexHull(),minAreaRect(),minEnclosingTriangle(),minEnclosingCircle()

本文详细介绍了OpenCV中用于计算凸包和最小包围区域的算子,包括convexHull()、boundingRect()、minAreaRect()、minEnclosingCircle()和minEnclosingTriangle()等。通过示例展示了这些函数如何应用于2D点集,以找出最小面积的矩形、三角形和圆来包围点集,并提供了相应的应用实例。
摘要由CSDN通过智能技术生成

OpenCV学习笔记(十八):凸包,最小包围区域算子:convexHull(),minAreaRect(),minEnclosingTriangle(),minEnclosingCircle()

1、convexHull()函数

计算出图像点集的凸包,根据图像的轮廓点,通过函数convexhull转化成凸包的点坐标,从而画出图像的凸包。

void convexHull(
InputArray points,		// 输入的点集,一般是用图像轮廓函数求得的轮廓点
OutputArray hull,		// 输出的是凸包的二维xy点的坐标值,针对每一个轮廓形成的。
bool clockwise =  false,	//  表示凸包的方向,true顺时针  flase 逆时针
bool returnPoints = true    // true表示返回点,false返回点地址的索引值
==returnPoints 标识符==
当输出数组"hull" 是std::vector时,忽略该标志,输出取决于向量的类型:
std::vector<int>表示 returnPoints=false, 返回索引值
std::vector<Point>表示 returnPoints=true。返回点	
)

2、boundingRect()函数

该函数计算并返回指定点集的最小右上界矩形。

Rect cv::boundingRect(InputArray points)	

3、minAreaRect()函数

对给定的2D 点集,寻找可旋转的最小面积包围矩形

RotatedRect cv::minAreaRect(InputArray points)	

4、minEnclosingCircle()函数

找到包围2D点集的最小面积的圆。

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

5、minEnclosingTriangle()函数

找到一个包含2D点集的最小面积三角形,并返回其面积。

double cv::minEnclosingTriangle(	
InputArray 	points,
OutputArray triangle 
)		

6、minEnclosingTriangle()函数

在一组二维点周围拟合一个椭圆。

RotatedRect cv::fitEllipse(
InputArray points
)	

7、approxPolyDP()函数

以指定的精度近似生成多边形曲线。
函数逼近一条曲线或另一条曲线/顶点较少的多边形,使它们之间的距离小于或等于指定的精度。它使用Douglas-Peucker算法

void approxPolyDP(
InputArray curve,			// 输入的点集(存储在std::vector或Mat中的二维点的输入向量)
OutputArray approxCurve, 	// 输出的点集,当前点集是能最小包容指定点集的。draw出来即是一个多边形;
double epsilon, 			// 指定的精度,也即是原始曲线与近似曲线之间的最大距离。
bool closed					// 若为true,则说明近似曲线是闭合的,它的首位都是相连,反之,若为false,则断开。
);

8、示例一: (凸包)

#include <opencv2/opencv.hpp>

using namespace cv;
using namespace std;

int main()
{
   
    // 1、初始化变量和随机值
    Mat image(600, 600, CV_8UC3);
    RNG& rng = theRNG()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值