001/* 002 * Copyright (C) Photon Vision. 003 * 004 * This program is free software: you can redistribute it and/or modify 005 * it under the terms of the GNU General Public License as published by 006 * the Free Software Foundation, either version 3 of the License, or 007 * (at your option) any later version. 008 * 009 * This program is distributed in the hope that it will be useful, 010 * but WITHOUT ANY WARRANTY; without even the implied warranty of 011 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 012 * GNU General Public License for more details. 013 * 014 * You should have received a copy of the GNU General Public License 015 * along with this program. If not, see <https://www.gnu.org/licenses/>. 016 */ 017 018package org.photonvision.vision.opencv; 019 020import java.util.Comparator; 021import org.photonvision.vision.target.PotentialTarget; 022 023public enum ContourSortMode { 024 Largest( 025 Comparator.comparingDouble(PotentialTarget::getArea) 026 .reversed()), // reversed so that zero index has the largest size 027 Smallest(Largest.getComparator().reversed()), 028 Highest(Comparator.comparingDouble(tgt -> tgt.getMinAreaRect().center.y)), 029 Lowest(Highest.getComparator().reversed()), 030 Leftmost(Comparator.comparingDouble(tgt -> tgt.getMinAreaRect().center.x * -1)), 031 Rightmost(Leftmost.getComparator().reversed()), 032 Centermost( 033 Comparator.comparingDouble( 034 tgt -> 035 (Math.pow(tgt.getMinAreaRect().center.y, 2) 036 + Math.pow(tgt.getMinAreaRect().center.x, 2)))); 037 038 private final Comparator<PotentialTarget> m_comparator; 039 040 ContourSortMode(Comparator<PotentialTarget> comparator) { 041 m_comparator = comparator; 042 } 043 044 public Comparator<PotentialTarget> getComparator() { 045 return m_comparator; 046 } 047}