Я получил эту ошибку для сравнения двух contourAreas в проекте openCV.
java .lang.IllegalArgumentException: метод сравнения нарушает его общий контракт!
И я Я пробовал:
Collections.sort(contours) { o1, o2 ->
val area1 = Imgproc.contourArea(o1)
val area2 = Imgproc.contourArea(o2)
(area2 - area1).toInt()
}
contours.sortWith(Comparator { o1, o2 ->
val area1 = Imgproc.contourArea(o1)
val area2 = Imgproc.contourArea(o2)
(area2 - area1).toInt()
})
И я подумал, что вышеупомянутое сомнительно, поэтому я попытался:
contours.sortWith(Comparator { o1, o2 ->
val area1 = Imgproc.contourArea(o1)
val area2 = Imgproc.contourArea(o2)
val res = (area2 - area1)
if (res > 0) {
return@Comparator 1
} else if(res < 0){
return@Comparator -1
}
return@Comparator 0
})
Но ни один из них не работал должным образом, и мое приложение было сломано. Как я могу решить эту проблему?