2017-07-12 86 views
0

我有一個包含MatOfPoints的列表,它們只是我使用opencv從圖像中檢測到的輪廓。 如何根據xy這些輪廓的座標對List<MatOfPoints>進行排序?如何根據輪廓(x,y)對MatOfPoints列表進行排序

我知道List有一個sort方法,但我很迷惑Comparator參數。

+0

如果你通過比較困惑,你爲什麼不看看Java提供的教程? –

+0

究竟是什麼讓你對Comparator感到困惑?這裏是接口的完整java文檔 - https://docs.oracle.com/javase/8/docs/api/java/util/Comparator.html –

回答

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; 
} 
相關問題