我只想知道如何在轮廓点列表中提取一些元素。
基本上,我有这个:
List<Contour<Point>> contoursList = new List<Contour<Point>>;
contourList.Add(contours); //that contours variable is a Contour<Point> that i receive in a .FindContour method.
然后我需要选择/提取/列表中的任何一个特定元素并找到它的坐标。那我怎么能这样做呢?
并且请,任何想法。
答案 0 :(得分:0)
你有没有提到this post?
使用区域,轮廓长度和等级的属性过滤器每个轮廓的中心可过滤所需的轮廓坐标。
答案 1 :(得分:0)
这是你应该做的:
请参阅下面的示例代码:
//variable to hold the contour
Contour<Point> contours = null;
for (var contour = binaryImage.FindContours(CHAIN_APPROX_METHOD.CV_CHAIN_APPROX_SIMPLE,
RETR_TYPE.CV_RETR_CCOMP, mem);
contour != null;
contour = contour.HNext)
{
if (contours == null)
{
//this is to ensure contours is not null
contours = contour;
}
//push/add the sequence of points to contours
contours.PushMulti(contour.ToArray(), BACK_OR_FRONT.BACK);
}
//do what you want with it
var ch = contours.GetConvexHull(ORIENTATION.CV_CLOCKWISE, mem);
//for example, convert these points to type PointF
PointF[] pointfs = Array.ConvertAll(contours.ToArray(), input => new PointF(input.X, input.Y));
//or detect the bounding rectangle
var roi = PointCollection.BoundingRectangle(pointfs);