OpenCvSharp 轮廓排序:按照左边界和上边界排序
确实,在OpenCvSharp中没有提供直接按照左边界或者上边界排序的函数。但是可以通过自己编写代码实现这个功能。
按照左边界排序:
假设已经得到了轮廓的列表contours,可以按照每个轮廓的最左边的坐标进行排序,代码如下:
var sortedContours = contours.OrderBy(c => c.ToArray().Min(p => p.X)).ToList();
其中,ToArray()将轮廓点的集合转换为数组,Min(p => p.X)得到该轮廓中X坐标最小的点的X坐标,OrderBy按照这个值进行排序。
按照上边界排序:
同样,可以按照每个轮廓的最上边的坐标进行排序,代码如下:
var sortedContours = contours.OrderBy(c => c.ToArray().Min(p => p.Y)).ToList();
其中,Min(p => p.Y)得到该轮廓中Y坐标最小的点的Y坐标,OrderBy按照这个值进行排序。
需要注意的是,排序的结果可能会与实际情况不完全相符,因为可能存在一些轮廓交叉的情况。如果需要更精确的排序,可以考虑使用其他的排序方法。
原文地址: https://www.cveoy.top/t/topic/oeka 著作权归作者所有。请勿转载和采集!