【问题标题】:How to sort contours in EMGUCV/C# from left to right?如何从左到右对 EMGUCV/C# 中的轮廓进行排序?
【发布时间】:2022-09-24 21:55:13
【问题描述】:

我们如何在 EMGUCV 4.5 中从左到右对轮廓进行排序?库中没有定义排序函数。

有没有人尝试在新版本的 EMGUCV 中对轮廓进行排序?

    标签: c# image-processing emgucv


    【解决方案1】:

    已提取边界矩形并使用 linq 进行排序。见下文

        static void Sort(Mat img, VectorOfVectorOfPoint contours)
        {
            List<Rectangle> rects= new List<Rectangle>();
    
            for (int i = 0; i < contours.Size; i++)
            {
                var rect = CvInvoke.BoundingRectangle(contours[i]);
                rects.Add(rect);
                CvInvoke.Rectangle(img, rect, new MCvScalar(0, 0, 0), 3);
                CvInvoke.Imshow("img", img);
                CvInvoke.WaitKey();
            }
    
            var rectList = rects.Distinct().OrderBy(r => r.Left).ThenBy(r 
                 => r.Top).ToList();
        }
    

    【讨论】:

      猜你喜欢
      • 2015-01-24
      • 2016-12-03
      • 2021-08-08
      • 1970-01-01
      • 2012-11-09
      • 1970-01-01
      • 2016-12-12
      • 2019-09-27
      • 1970-01-01
      相关资源
      最近更新 更多