Java 如何根据等高线(x,y)对多点列表进行排序
我有一个列表,其中包含了我使用Java 如何根据等高线(x,y)对多点列表进行排序,java,android,opencv4android,Java,Android,Opencv4android,我有一个列表,其中包含了我使用opencv从图像中检测到的轮廓。 如何根据这些等高线的x和y坐标对列表进行排序 我知道List有一个sort方法,但我被Comparator参数弄糊涂了。这取决于您想如何比较它,解决方案可能是: @Override public int compare(MatOfPoints mop1, MatOfPoints mop2) { long sumMop = 0; long sumMop2 = 0; for( Point p: mop1.toList
opencv
从图像中检测到的轮廓。
如何根据这些等高线的x
和y
坐标对列表进行排序
我知道List
有一个sort
方法,但我被Comparator
参数弄糊涂了。这取决于您想如何比较它,解决方案可能是:
@Override
public int compare(MatOfPoints mop1, MatOfPoints mop2) {
long sumMop = 0;
long sumMop2 = 0;
for( Point p: mop1.toList() ){
sumMop1 += p.x + p.y
}
for( Point p: mop2.toList() ){
sumMop2 += p.x + p.y
}
if( sumMop1 > sumMop2)
return 1;
else if( sumMop1 < sumMop2 )
return -1;
else
return 0;
}
@覆盖
公共整数比较(多点mop1,多点mop2){
长总和=0;
长总和2=0;
对于(点p:mop1.toList()){
总和1+=p.x+p.y
}
对于(点p:mop2.toList()){
总和2+=p.x+p.y
}
如果(sumMop1>sumMop2)
返回1;
else if(sumMop1
如果您对Comparator感到困惑,为什么不看看java提供的教程呢?Comparator到底让您困惑的是什么?下面是接口的完整java文档-