В API Java OpenCV FeatureDetector создается с помощью следующего метода фабрики:Оценка строку, соответствующую имени поля класса/экземпляра
public static FeatureDetector create(int detectorType)
где detectorType
соответствует static final int
поле того же класса FeatureDetector
, например FeatureDetector.ORB
.
Я хотел бы указать тип FeatureDetector в аргументе командной строки или в файле конфигурации. Поэтому в основном мне нужно «преобразовать» строку FeatureDetector.ORB
в значение поля FeatureDetector.ORB
.
До сих пор я был в состоянии сделать это с помощью отражения:
String detectorClassName = "ORB"; // the actual code gets the value from a Properties object
detectorClass = FeatureDetector.class;
Field f = detectorClass.getDeclaredField(detectorClassName);
int d = f.getInt(detectorClass);
detector = FeatureDetector.create(d);
, но мне было интересно, если есть более быстрый и легкий способ сделать это.
использование Перечисления и функции, которые они предоставляют? – hoaz
Я бы предпочел не использовать явные числовые константы, которые могут измениться в будущих выпусках. –