opencv_contrib icon indicating copy to clipboard operation
opencv_contrib copied to clipboard

Build error in bgsegm::BackgroundSubtractors

Open limann77 opened this issue 1 month ago • 1 comments

I'm trying to build git master OpenCV+contrib with gcc 15.2.1. My build with

    cmake -B build -S $pkgname \
        -DWITH_VTK=OFF \
        -DWITH_OPENCL=OFF \
        -DWITH_OPENGL=ON \
        -DWITH_TBB=ON \
        -DBUILD_WITH_DEBUG_INFO=OFF \
        -DBUILD_TESTS=OFF \
        -DBUILD_PERF_TESTS=OFF \
        -DBUILD_EXAMPLES=OFF \
        -DINSTALL_C_EXAMPLES=OFF \
        -DINSTALL_PYTHON_EXAMPLES=OFF \
        -DCMAKE_INSTALL_PREFIX=/usr \
        -DOPENCV_EXTRA_MODULES_PATH="$srcdir/opencv_contrib/modules" \
        -DOPENCV_SKIP_PYTHON_LOADER=ON \
        -DOPENCV_PYTHON3_INSTALL_PATH=$_pythonpath \
        -DLAPACK_LIBRARIES="/usr/lib/liblapack.so;/usr/lib/libblas.so;/usr/lib/libcblas.so" \
        -DLAPACK_CBLAS_H="/usr/include/cblas.h" \
        -DLAPACK_LAPACKE_H="/usr/include/lapacke.h" \
        -DOPENCV_GENERATE_PKGCONFIG=ON \
        -DOPENCV_ENABLE_NONFREE=ON \
        -DOPENCV_GENERATE_SETUPVARS=OFF \
        -DWITH_1394=OFF \
        -DEIGEN_INCLUDE_PATH=/usr/include/eigen3 \
        -DCPU_BASELINE_DISABLE=SSE3,AVX512_SKX \
        -DCPU_DISPATCH= \
        -DBUILD_opencv_java=OFF \
        -DBUILD_opencv_cvv=OFF \
        -DBUILD_opencv_dnn=ON \
        -DBUILD_highgui=OFF \
        -DWITH_FFMPEG=ON \
        -DWITH_QT=OFF \
        -DWITH_PROTOBUF=OFF \
        -DWITH_IPP=OFF \
        -DWITH_ZLIB_NG=ON

    LC_ALL=C cmake --build build

leads to a compilation failure in opencv2/bgsegm.hpp:

In file included from ./opencv_contrib/modules/bgsegm/src/precomp.hpp:45,
                 from ./opencv_contrib/modules/bgsegm/src/bgfg_gaussmix.cpp:43:
./opencv_contrib/modules/bgsegm/include/opencv2/bgsegm.hpp:89:26: error: 'virtual void cv::bgsegm::BackgroundSubtractorMOG::apply(cv::InputArray, cv::InputArray, cv::OutputArray, double)' marked 'override', but does not override
   89 |     CV_WRAP virtual void apply(InputArray image, InputArray knownForegroundMask, OutputArray fgmask, double learningRate=-1) CV_OVERRIDE = 0;
      |                          ^~~~~
./opencv_contrib/modules/bgsegm/include/opencv2/bgsegm.hpp:153:26: error: 'virtual void cv::bgsegm::BackgroundSubtractorGMG::apply(cv::InputArray, cv::InputArray, cv::OutputArray, double)' marked 'override', but does not override
  153 |     CV_WRAP virtual void apply(InputArray image, InputArray knownForegroundMask, OutputArray fgmask, double learningRate=-1) CV_OVERRIDE = 0;
      |                          ^~~~~
./opencv_contrib/modules/bgsegm/include/opencv2/bgsegm.hpp:269:26: error: 'virtual void cv::bgsegm::BackgroundSubtractorCNT::apply(cv::InputArray, cv::InputArray, cv::OutputArray, double)' marked 'override', but does not override
  269 |     CV_WRAP virtual void apply(InputArray image, InputArray knownForegroundMask, OutputArray fgmask, double learningRate=-1) CV_OVERRIDE = 0;
      |                          ^~~~~
./opencv_contrib/modules/bgsegm/include/opencv2/bgsegm.hpp:330:26: error: 'virtual void cv::bgsegm::BackgroundSubtractorGSOC::apply(cv::InputArray, cv::InputArray, cv::OutputArray, double)' marked 'override', but does not override
  330 |     CV_WRAP virtual void apply(InputArray image, InputArray knownForegroundMask, OutputArray fgmask, double learningRate=-1) CV_OVERRIDE = 0;
      |                          ^~~~~
./opencv_contrib/modules/bgsegm/include/opencv2/bgsegm.hpp:342:26: error: 'virtual void cv::bgsegm::BackgroundSubtractorLSBP::apply(cv::InputArray, cv::InputArray, cv::OutputArray, double)' marked 'override', but does not override
  342 |     CV_WRAP virtual void apply(InputArray image, InputArray knownForegroundMask, OutputArray fgmask, double learningRate=-1) CV_OVERRIDE = 0;
      |                          ^~~~~

Just removing the CV_OVERRIDE=0 leads to

/usr/bin/ld: CMakeFiles/opencv_bgsegm.dir/src/bgfg_gaussmix.cpp.o:(.data.rel.ro._ZTIN2cv6bgsegm27BackgroundSubtractorMOGImplE[_ZTIN2cv6bgsegm27BackgroundSubtractorMOGImplE]+0x10): undefined reference to `typeinfo for cv::bgsegm::BackgroundSubtractorMOG'
/usr/bin/ld: CMakeFiles/opencv_bgsegm.dir/src/bgfg_gmg.cpp.o:(.data.rel.ro._ZTIN2cv6bgsegm27BackgroundSubtractorGMGImplE[_ZTIN2cv6bgsegm27BackgroundSubtractorGMGImplE]+0x10): undefined reference to `typeinfo for cv::bgsegm::BackgroundSubtractorGMG'
/usr/bin/ld: CMakeFiles/opencv_bgsegm.dir/src/bgfg_gsoc.cpp.o:(.data.rel.ro._ZTIN2cv6bgsegm28BackgroundSubtractorGSOCImplE[_ZTIN2cv6bgsegm28BackgroundSubtractorGSOCImplE]+0x10): undefined reference to `typeinfo for cv::bgsegm::BackgroundSubtractorGSOC'
/usr/bin/ld: CMakeFiles/opencv_bgsegm.dir/src/bgfg_gsoc.cpp.o:(.data.rel.ro._ZTIN2cv6bgsegm28BackgroundSubtractorLSBPImplE[_ZTIN2cv6bgsegm28BackgroundSubtractorLSBPImplE]+0x10): undefined reference to `typeinfo for cv::bgsegm::BackgroundSubtractorLSBP'
/usr/bin/ld: CMakeFiles/opencv_bgsegm.dir/src/bgfg_subcnt.cpp.o:(.data.rel.ro._ZTIN2cv6bgsegm27BackgroundSubtractorCNTImplE[_ZTIN2cv6bgsegm27BackgroundSubtractorCNTImplE]+0x10): undefined reference to `typeinfo for cv::bgsegm::BackgroundSubtractorCNT'

limann77 avatar Oct 25 '25 13:10 limann77