如何根据轮廓(x,y)对MatOfPoints列表进行排序

时间:2017-07-12 11:48:02

标签: java android opencv4android

我有一个包含MatOfPoints的列表,它只是我使用opencv从图像中检测到的轮廓。 如何根据这些轮廓的List<MatOfPoints>x坐标对y进行排序?

我知道List有一个sort方法,但我对Comparator参数感到困惑。

1 个答案:

答案 0 :(得分:0)

这取决于你想要如何比较它,解决方案可能是:

@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;
}