opencv3--学习笔记(凸包绘制和矩形包围)

		//准备参数
		int hullcount = (int)hull.size();//线段的条数
		//point0初始化,比如一共60条线段60个点,这就是第59个点,方便循环开始和第0个点连接
		Point point0 = points[hull[hullcount - 1]];

		//绘制凸包的边
		for (int i = 0; i < hullcount; i++)
		{
			Point point = points[hull[i]];//这地方要注意的是hull[j]对应的点要去points里面寻找才行
			line(image, point0, point, Scalar(255, 255, 255), 2, LINE_AA);
			point0 = point;
		}

凸包的绘制程序节选

//对给定的 2D 点集,寻找最小面积的包围矩形
RotatedRect box = minAreaRect(Mat(points));
Point2f vertex[4];
box.points(vertex);
for( int i = 0; i < 4; i++ )
	line(image, vertex[i], vertex[(i+1)%4], Scalar(100, 200, 211), 2, CV_AA);

矩形绘制程序节选

 

凸包绘制程序中的point0, point可以采用矩形绘制中的vertex[i], vertex[(i+1)%4]这种方法,实现前后节点的相连。

你可能感兴趣的:(opencv3--学习笔记(凸包绘制和矩形包围))