Я собрал opencv с Cmake и попробовал несколько вещей, таких как отображение видеопотока и загрузка изображений, работал нормально.
Затем я попытался использовать алгоритмы обнаружения функций (sift, surf и т. Д.) И получил различные ошибки,После небольшого исследования StackOverflow я наткнулся на следующую документацию: https://docs.opencv.org/master/db/dfa/tutorial_transition_guide.html#tutorial_transition_hints_headers
Здесь говорится, что хороший способ объявить алгоритм следующий:
cv::Ptr<cv::xfeatures2d::SIFT> sift2 = cv::xfeatures2d::SIFT::create(0, 4, 0.04, 10, 1.6);
однако это даетмне ошибка при компиляции. Ошибка:
unsolved external symbol "public: static_struct cv::Ptr..." referenced in main
Я должен упомянуть, что после того, как я собрал OpenCV с Cmake, я включил файлы xfeatures2d в папку include. Поэтому я не собирал библиотеку с помощью файлов contrib. Это причина ошибки или я что-то упустил? Потому что я могу открыть файл и увидеть, что у xfeatures2d действительно есть член SIFT, и я предполагаю, что у него есть функция create (), так как Visual Assist перечисляет все типы параметров.