OpenCvSharp.Point[] 找出最大取小值
时间: 2023-09-19 17:08:06 浏览: 198
如果要在OpenCvSharp中找出一个Point[]数组中的最大值和最小值,可以使用以下代码:
```
Point[] points = new Point[] { new Point(1, 2), new Point(3, 4), new Point(5, 6) };
Point maxPoint = points.Max();
Point minPoint = points.Min();
```
以上代码中,我们定义了一个Point[]数组points,包含了三个Point类型的元素。然后使用Max()和Min()方法分别找到了points数组中的最大值和最小值,并将它们分别赋值给了maxPoint和minPoint变量。
需要注意的是,这里的最大值和最小值是根据Point类型的默认比较方式(即按照X坐标先比较,如果相同再按Y坐标比较)来计算的。如果你需要按照其他方式比较,可以自定义比较器或者使用Linq的OrderBy()和ThenBy()方法来实现。
相关问题
OpenCvSharp中 已知 OpenCvSharp.Point[]approxPoints找出最左边和最右边的点
如果已知一个Point类型的数组`approxPoints`,想要找出其中最左边和最右边的点,可以使用以下代码:
```
Point[] approxPoints = new Point[] { new Point(1, 2), new Point(3, 4), new Point(5, 6) };
Point leftmostPoint = approxPoints.OrderBy(p => p.X).First();
Point rightmostPoint = approxPoints.OrderByDescending(p => p.X).First();
```
以上代码中,我们使用了Linq的OrderBy()和OrderByDescending()方法来对数组进行排序,然后使用First()方法获取排好序后的数组中的第一个元素,即最左边和最右边的点。
需要注意的是,如果数组中有多个点的X坐标相同,那么这种方法只能找到其中的一个点。如果需要找到所有X坐标相同的点,可以使用Where()方法来进行筛选。
如果要在OpenCvSharp中找出一个Point[]数组中的最大值和最小值,.Max(); 和.Min()方法如何实现
在OpenCvSharp中,Point类型的数组是没有直接实现Max()和Min()方法的。但是我们可以通过Linq中的Max()和Min()方法来实现。
要使用Linq的Max()和Min()方法,首先需要引入System.Linq命名空间。然后可以使用以下代码找到一个Point[]数组中的最大值和最小值:
```
using System.Linq;
using OpenCvSharp;
Point[] points = new Point[] { new Point(1, 2), new Point(3, 4), new Point(5, 6) };
Point maxPoint = points.Max(p => p.X > p.Y ? p.X : p.Y);
Point minPoint = points.Min(p => p.X < p.Y ? p.X : p.Y);
```
以上代码中,我们首先引入了System.Linq命名空间,然后定义了一个Point[]数组points,包含了三个Point类型的元素。接着使用Max()和Min()方法,传入一个lambda表达式作为参数,来计算最大值和最小值。
在lambda表达式中,我们使用了条件运算符(?:)来比较X坐标和Y坐标的大小,以决定使用哪一个坐标来进行比较。
需要注意的是,使用Linq的Max()和Min()方法可能会影响程序的性能,因为它们需要对数组进行遍历和比较。如果数组比较大或者需要频繁进行最大值和最小值的查找,建议使用其他更高效的算法。
阅读全文