Как заменить функцию FeatureDetector в новом OpenCV?
Я скачал пример кода Java OpenCV. В нескольких строках кода есть метод FeatureDetectore(), который компилятор считает устаревшим.
FeatureDetector detector = FeatureDetector.create(FeatureDetector.MSER);
detector.detect(mGrey, keypoint);
listpoint = keypoint.toList();
Итак, как я должен заменить эту часть кода? Есть ли для этого какая-то новая альтернатива?
или я могу продолжить использование устаревшей функции?
2 ответов:
Вы можете продолжать с этим, и это будет работать. Устаревание означает, что есть новая рекомендуемая альтернатива, но старый код все равно будет работать. Новый способ сделать это-использовать FastFeatureDetector или AgastFeatureDetector в зависимости от вашего варианта использования. Я не знаком с OpenCV, поэтому, к сожалению, не могу рекомендовать, какая именно реализация вам нужна, вам нужно прочитать JavaDoc/другие документы и выяснить, какой из них подходит вашему коду.
Читая эту страницу документации , очевидно, что теперь мы непосредственно создаем экземпляр требуемого детектора, такого как:
Mat mask = new Mat(); MatOfKeyPoint keypoints = new MatOfKeyPoint(); MSER detector = MSER.create(); detector.detect(imageMat, keypoints, mask);Это почти то же самое для шара, просто измените класс:
Mat mask = new Mat(); MatOfKeyPoint keypoints = new MatOfKeyPoint(); ORB detector = ORB.create(); detector.detect(imageMat, keypoints, mask);Перед тем, как объявить устаревшим, мы должны были написать что-то похожее на (это старый класс):
FeatureDetector _featureDetector = FeatureDetector.create(FeatureDetector.ORB);
Comments