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

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

  • [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,则断开。
	*/
}
相关推荐
©️2020 CSDN 皮肤主题: 1024 设计师:白松林 返回首页