opencv_contrib编译错误:类没有成员

opencv_contrib compilation error: class has no member

本文关键字:成员 错误 contrib 编译 opencv      更新时间:2023-10-16

我必须实现用于图像拼接的SURF算法。我在图书馆遇到了麻烦,如所列

在尝试了我能找到的解决方案后,我删除了opencv,开始从头开始构建。我试图在安装过程中包含"opencv_controib"库,但没有成功。

所以我安装了opencv,然后尝试按照包的github存储库中的说明集成包。在
make-j2行,我不断得到以下错误。

[ 77%] Building CXX object modules/ximgproc/CMakeFiles/opencv_ximgproc.dir/src/sparse_match_interpolators.cpp.o
In file included from /home/akshat/OpenCV/opencv-3.0.0/modules/core/include/opencv2/core.hpp:54:0,
                 from /home/akshat/OpenCV/opencv-3.0.0/build/modules/ximgproc/precomp.hpp:40:
/home/akshat/opencv_contrib/modules/ximgproc/src/sparse_match_interpolators.cpp: In member function ‘virtual void cv::ximgproc::EdgeAwareInterpolatorImpl::interpolate(cv::InputArray, cv::InputArray, cv::InputArray, cv::InputArray, cv::OutputArray)’:
/home/akshat/opencv_contrib/modules/ximgproc/src/sparse_match_interpolators.cpp:171:52: error: ‘const class cv::_InputArray’ has no member named ‘isVector’
     CV_Assert( !from_points.empty() && from_points.isVector() &&
                                                    ^
/home/akshat/OpenCV/opencv-3.0.0/modules/core/include/opencv2/core/base.hpp:389:33: note: in definition of macro ‘CV_Assert’
 #define CV_Assert( expr ) if(!!(expr)) ; else cv::error( cv::Error::StsAssert, #expr, CV_Func, __FILE__, __LINE__ )
                                 ^
/home/akshat/opencv_contrib/modules/ximgproc/src/sparse_match_interpolators.cpp:172:52: error: ‘const class cv::_InputArray’ has no member named ‘isVector’
                !to_points  .empty() && to_points  .isVector() &&
                                                    ^
/home/akshat/OpenCV/opencv-3.0.0/modules/core/include/opencv2/core/base.hpp:389:33: note: in definition of macro ‘CV_Assert’
 #define CV_Assert( expr ) if(!!(expr)) ; else cv::error( cv::Error::StsAssert, #expr, CV_Func, __FILE__, __LINE__ )
                                 ^
make[2]: *** [modules/ximgproc/CMakeFiles/opencv_ximgproc.dir/src/sparse_match_interpolators.cpp.o] Error 1
make[1]: *** [modules/ximgproc/CMakeFiles/opencv_ximgproc.dir/all] Error 2
make: *** [all] Error 2

提前感谢

/home/akshat/opencv_contrib/modules/ximgproc/src/sparse_match_interpolators.cpp:171:52: error: ‘const class cv::_InputArray’ has no member named ‘isVector’

证明这是版本不兼容。ximgproc中的代码期望与cv(具体地说,cv::_InputArray)的接口不同于您现有的接口。

您的选择是:

  • 尝试与您安装的cv版本相对应的opencv-contrib代码库版本
  • 再次尝试构建与当前opencv-contrib相对应的较新cv