qbo_face_recognition和qbo_music_player均出现类似编译错误.作为opencv的业余玩家,被这个坑了:
在以前版本中,surf和sift算法都是在头文件#include <opencv2/features2d/features2d.hpp>中,但在新的opencv版本出来后,如果仍然使用这个头文件就会出现编译错误如下: 产生错误的原因就是 sift 和 surf算法已经写到#include <opencv2/nonfree/features2d.hpp>中,所以需要把头文件替换一下
[ 16%] Building CXX object CMakeFiles/hand_gesture_calib.dir/src/Orbit.cpp.o
/home/ppeix/tutorials/catkin_ws/src/OpenQbo/qbo_music_player/src/Orbit.cpp: In constructor ‘Orbit::Orbit(std::string, std::string)’:/home/ppeix/tutorials/catkin_ws/src/OpenQbo/qbo_music_player/src/Orbit.cpp:40:64: error: expected type-specifier
/home/ppeix/tutorials/catkin_ws/src/OpenQbo/qbo_music_player/src/Orbit.cpp:40:64: error: expected ‘)’
/home/ppeix/tutorials/catkin_ws/src/OpenQbo/qbo_music_player/src/Orbit.cpp:40:97: error: no matching function for call to ‘cv::GridAdaptedFeatureDetector::GridAdaptedFeatureDetector(int*, int, int, int)’
/home/ppeix/tutorials/catkin_ws/src/OpenQbo/qbo_music_player/src/Orbit.cpp:40:97: note: candidates are:
/opt/ros/hydro/include/opencv2/features2d/features2d.hpp:705:13: note: cv::GridAdaptedFeatureDetector::GridAdaptedFeatureDetector(const cv::Ptr<cv::FeatureDetector>&, int, int, int)
/opt/ros/hydro/include/opencv2/features2d/features2d.hpp:705:13: note: no known conversion for argument 1 from ‘int*’ to ‘const cv::Ptr<cv::FeatureDetector>&’
/opt/ros/hydro/include/opencv2/features2d/features2d.hpp:695:20: note: cv::GridAdaptedFeatureDetector::GridAdaptedFeatureDetector(const cv::GridAdaptedFeatureDetector&)
/opt/ros/hydro/include/opencv2/features2d/features2d.hpp:695:20: note: candidate expects 1 argument, 4 provided
/home/ppeix/tutorials/catkin_ws/src/OpenQbo/qbo_music_player/src/Orbit.cpp:41:30: error: expected type-specifier
/home/ppeix/tutorials/catkin_ws/src/OpenQbo/qbo_music_player/src/Orbit.cpp:41:30: error: no match for ‘operator=’ in ‘((Orbit*)this)->Orbit::descriptor_extractor_ = (int*)operator new(4u)’
/home/ppeix/tutorials/catkin_ws/src/OpenQbo/qbo_music_player/src/Orbit.cpp:41:30: note: candidate is:
/opt/ros/hydro/include/opencv2/core/operations.hpp:2626:41: note: cv::Ptr<_Tp2>& cv::Ptr<_Tp>::operator=(const cv::Ptr<_Tp>&) [with _Tp = cv::DescriptorExtractor]
/opt/ros/hydro/include/opencv2/core/operations.hpp:2626:41: note: no known conversion for argument 1 from ‘int*’ to ‘const cv::Ptr<cv::DescriptorExtractor>&’