Эдуард 0 Жалоба Опубликовано June 19, 2017 Я новичок не только в распознавании, но и в программировании на с++, поэтому нуждаюсь в совете. При написании тестовой задачи у меня возникла одна ошибка: «использование объекта абстрактного типа класса "cv::xfeatures2d::SURF" не допускается:». Я использовал этот код. SurfDescriptorExtractor extractor; Mat descriptors_object, descriptors_scene; extractor.compute( img_object, keypoints_object, descriptors_object ); extractor.compute( img_scene, keypoints_scene, descriptors_scene ); Однако в других примерах я обнаружил другое оформление того же самого и поступил по аналогии ним. Ptr<SURF> extractor = SURF::create(); Mat descriptors_object, descriptors_scene; extractor->compute(img_object, keypoints_object, descriptors_object); extractor->compute(img_scene, keypoints_scene, descriptors_scene); Всё заработало. Осталось теперь понять – почему возникла ошибка и что я такого сделал, что она исчезла. Не хочу пропускать такие принципиальные вещи. Помогите разобраться. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
mrgloom 242 Жалоба Опубликовано June 19, 2017 Сначала надо поставить английскую версию Visual Studio чтобы было легче гуглить ошибки и другим программистам понимать их смысл. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Nuzhny 243 Жалоба Опубликовано June 19, 2017 Тут проще всего заглянуть в исходники. Тогда будет понятно, что есть абстрактный класс-интерфейс и есть его реализация. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах