Я новичок не только в распознавании, но и в программировании на с++, поэтому нуждаюсь в совете. При написании тестовой задачи у меня возникла одна ошибка: «использование объекта абстрактного типа класса "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);
Всё заработало.
Осталось теперь понять – почему возникла ошибка и что я такого сделал, что она исчезла.
Не хочу пропускать такие принципиальные вещи. Помогите разобраться.