计算机视觉_OpenCV开源库讲解(多边形逼近)

本文详细介绍了轮廓逼近技术,这是一种减少图像处理中轮廓点数的方法,通过使用多边形逼近来简化轮廓,实现对多边形的精确识别。文章通过代码示例展示了如何利用轮廓逼近找到图像中的特定形状,如四边形和六边形。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我们提取目标轮廓之后,可以做很多处理,下面讲解轮廓处理之一:多边形逼近;

  • [1]轮廓逼近简介:
    轮廓逼近本质是减少编码点;
  • [2]代码展示:
for(size_t i = 0; i < contours.size(); i++)
{
	Moments mm = moments(contours[i]);
	double cx = mm.m10 / mm.m00;
	double cy = mm.m01 / mm.m00;
	circle(src, Point(cx, cy), 3, Scalar(255, 0, 0), 2, 8, 0);

	double area = contourArea(contours[i]);
	double len = arcLength(contours[i], true);
	
	Mat result;
	approxPolyDP(contours[i], result, 4, true);
	printf("corners:%d,columns:%d", result.rows, result.cols);
	//result.rows为逼近多边形的顶点;
	//result.cols为逼近多边形的边;
	
	if(result.rows == 6)
	{
		cout << "六边形" << endl;
	}
	else if(result.rows == 4)
	{
		cout << "四边形" << endl;
	}
	
	/*
	void approxPolyDP(InputArray curve, OutputArray approxCurve, double epsilon, bool closed);
	第一个参数 InputArray curve:输入的点集
	第二个参数OutputArray approxCurve:输出的点集,当前点集是能最小包容指定点集的。画出来即是一个多边形。
	第三个参数double epsilon:指定的精度,也即是原始曲线与近似曲线之间的最大距离。
	第四个参数bool closed:若为true,则说明近似曲线是闭合的;反之,若为false,则断开。
	*/
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值