0
我有一個包含MatOfPoints的列表,它們只是我使用opencv
從圖像中檢測到的輪廓。 如何根據x
和y
這些輪廓的座標對List<MatOfPoints>
進行排序?如何根據輪廓(x,y)對MatOfPoints列表進行排序
我知道List
有一個sort
方法,但我很迷惑Comparator
參數。
我有一個包含MatOfPoints的列表,它們只是我使用opencv
從圖像中檢測到的輪廓。 如何根據x
和y
這些輪廓的座標對List<MatOfPoints>
進行排序?如何根據輪廓(x,y)對MatOfPoints列表進行排序
我知道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;
}
如果你通過比較困惑,你爲什麼不看看Java提供的教程? –
究竟是什麼讓你對Comparator感到困惑?這裏是接口的完整java文檔 - https://docs.oracle.com/javase/8/docs/api/java/util/Comparator.html –