2017-09-16 11 views
0

J'utilise Qt creator dans Ubuntu 16.04 pour construire un projet non-Qt. J'ai besoin d'utiliser SIFT pour détecter les fonctionnalités. Je sais que SIFT et SURF sont dans OpenCV_contrib donc j'ajoute le module supplémentaire en utilisant Cmake-gui pour configurer OpenCV.OpenCV 3.2.0 ne peut pas accéder à SURF/SIFT dans xfeatures2d

Alors je peux trouver libopencv_xfeatures2d.so/.so.3.2/.so.3.2.0 et libopencv_features2d.so/.so.3.2/.so.3.2.0 aussi dans/usr/local/lib

Quand je suis en utilisant le code de site officiel OpenCV: [EIPD Code de site officiel OpenCV] [1]

pour tester EIPD, je reçois toujours l'erreur

/home/ronjane92/Documents/Qt/OpenCV/build/lib/libslam_essentials.so:-1: error: undefined reference to `cv::xfeatures2d::SIFT::create(int, int, double, double, double)' 

:-1: error: collect2: error: ld returned 1 exit status 

Mon CMakeLists.txt a les choses suivantes:

CMAKE_MINIMUM_REQUIRED(VERSION 2.8) 
PROJECT(opencv_test) 

include(CheckCXXCompilerFlag) 
SET(CMAKE_CXX_FLAGS "-std=c++11 ${CMAKE_CXX_FLAGS}") 

FIND_PACKAGE(PCL 1.7 REQUIRED COMPONENTS common io visualization) 
ADD_DEFINITIONS(${PCL_DEFINITIONS}) 
INCLUDE_DIRECTORIES(${PCL_INCLUDE_DIRS}) 
LINK_DIRECTORIES(${PCL_LIBRARY_DIRS}) 

ADD_SUBDIRECTORY(lib) 
INCLUDE_DIRECTORIES(${PROJECT_SOURCE_DIR}/lib) 
LINK_DIRECTORIES(${PROJECT_BINARY_DIR}/lib) 

FIND_PACKAGE(OpenCV 3.1.0 REQUIRED) 
INCLUDE_DIRECTORIES(${OpenCV_INCLUDE_DIRS}) 

ADD_EXECUTABLE(${PROJECT_NAME} "main.cpp") 
TARGET_LINK_LIBRARIES(opencv_test ${OpenCV_LIBRARIES} 
            ${PCL_LIBRARIES} 
            realsense 
            slam_essentials 
        ) 

Les résultats de Cmake-IUG sont

Detected version of GNU GCC: 54 (504) 
FP16: Feature disabled 
Found ZLIB: /usr/lib/x86_64-linux-gnu/libz.so (found suitable version "1.2.8", minimum required is "1.2.3") 
Found ZLIB: /usr/lib/x86_64-linux-gnu/libz.so (found version "1.2.8") 
Found OpenEXR: /usr/lib/x86_64-linux-gnu/libIlmImf.so 
Checking for module 'gstreamer-base-1.0' 
    No package 'gstreamer-base-1.0' found 
Checking for module 'gstreamer-video-1.0' 
    No package 'gstreamer-video-1.0' found 
Checking for module 'gstreamer-app-1.0' 
    No package 'gstreamer-app-1.0' found 
Checking for module 'gstreamer-riff-1.0' 
    No package 'gstreamer-riff-1.0' found 
Checking for module 'gstreamer-pbutils-1.0' 
    No package 'gstreamer-pbutils-1.0' found 
Checking for module 'gstreamer-base-0.10' 
    No package 'gstreamer-base-0.10' found 
Checking for module 'gstreamer-video-0.10' 
    No package 'gstreamer-video-0.10' found 
Checking for module 'gstreamer-app-0.10' 
    No package 'gstreamer-app-0.10' found 
Checking for module 'gstreamer-riff-0.10' 
    No package 'gstreamer-riff-0.10' found 
Checking for module 'gstreamer-pbutils-0.10' 
    No package 'gstreamer-pbutils-0.10' found 
Looking for linux/videodev.h 
Looking for linux/videodev.h - not found 
Looking for linux/videodev2.h 
Looking for linux/videodev2.h - found 
Looking for sys/videoio.h 
Looking for sys/videoio.h - not found 
WARNING, PrimeSensor Module binaries directory (set by OPENNI_PRIME_SENSOR_MODULE_BIN_DIR variable) is not found or does not have PrimeSensor Module binaries. 
Checking for module 'libavresample' 
    No package 'libavresample' found 
Checking for module 'libgphoto2' 
    No package 'libgphoto2' found 
Found TBB: /usr/lib/x86_64-linux-gnu/libtbb.so 
found IPP (ICV version): 9.0.1 [9.0.1] 
at: /home/ronjane92/Programs/opencv/opencv-3.2.0-build/3rdparty/ippicv/ippicv_lnx 
Could not find OpenBLAS lib. Turning OpenBLAS_FOUND off 
Could NOT find Atlas (missing: Atlas_CLAPACK_INCLUDE_DIR) 
Could NOT find JNI (missing: JAVA_INCLUDE_PATH JAVA_INCLUDE_PATH2 JAVA_AWT_INCLUDE_PATH) 
Could NOT find Matlab (missing: MATLAB_MEX_SCRIPT MATLAB_INCLUDE_DIRS MATLAB_ROOT_DIR MATLAB_LIBRARIES MATLAB_LIBRARY_DIRS MATLAB_MEXEXT MATLAB_ARCH MATLAB_BIN) 
The imported target "vtkRenderingPythonTkWidgets" references the file 
    "/usr/lib/x86_64-linux-gnu/libvtkRenderingPythonTkWidgets.so" 
but this file does not exist. Possible reasons include: 
* The file was deleted, renamed, or moved to another location. 
* An install or uninstall procedure did not complete successfully. 
* The installation package was faulty and contained 
    "/usr/lib/cmake/vtk-6.2/VTKTargets.cmake" 
but not all the files it references. 

The imported target "vtk" references the file 
    "/usr/bin/vtk" 
but this file does not exist. Possible reasons include: 
* The file was deleted, renamed, or moved to another location. 
* An install or uninstall procedure did not complete successfully. 
* The installation package was faulty and contained 
    "/usr/lib/cmake/vtk-6.2/VTKTargets.cmake" 
but not all the files it references. 

Found VTK ver. 6.2.0 (usefile: /usr/lib/cmake/vtk-6.2/UseVTK.cmake) 
Caffe: NO 
Protobuf: YES 
Glog: NO 
freetype2: YES 
harfbuzz: YES 
Module opencv_sfm disabled because the following dependencies are not found: Glog/Gflags 
freetype2: YES 
harfbuzz: YES 
Checking for modules 'tesseract;lept' 
    No package 'tesseract' found 
    No package 'lept' found 
Tesseract: NO 
Check contents of vgg_generated_48.i ... 
Check contents of vgg_generated_64.i ... 
Check contents of vgg_generated_80.i ... 
Check contents of vgg_generated_120.i ... 
Check contents of boostdesc_bgm.i ... 
Check contents of boostdesc_bgm_bi.i ... 
Check contents of boostdesc_bgm_hd.i ... 
Check contents of boostdesc_binboost_064.i ... 
Check contents of boostdesc_binboost_128.i ... 
Check contents of boostdesc_binboost_256.i ... 
Check contents of boostdesc_lbgm.i ... 

General configuration for OpenCV 3.2.0 ===================================== 
    Version control:    unknown 

    Extra modules: 
    Location (extra):   /home/ronjane92/Programs/opencv/opencv_contrib-3.2.0/modules 
    Version control (extra):  unknown 

    Platform: 
    Timestamp:     2017-09-16T18:20:02Z 
    Host:      Linux 4.8.0-58-generic x86_64 
    CMake:      3.5.1 
    CMake generator:    Unix Makefiles 
    CMake build tool:   /usr/bin/make 
    Configuration:    Release 

    C/C++: 
    Built as dynamic libs?:  YES 
    C++ Compiler:    /usr/bin/c++ (ver 5.4.0) 
    C++ flags (Release):   -fsigned-char -W -Wall -Werror=return-type -Werror=non-virtual-dtor -Werror=address -Werror=sequence-point -Wformat -Werror=format-security -Wmissing-declarations -Wundef -Winit-self -Wpointer-arith -Wshadow -Wsign-promo -Wno-narrowing -Wno-delete-non-virtual-dtor -Wno-comment -fdiagnostics-show-option -Wno-long-long -pthread -fomit-frame-pointer -msse -msse2 -mno-avx -msse3 -mno-ssse3 -mno-sse4.1 -mno-sse4.2 -ffunction-sections -fvisibility=hidden -fvisibility-inlines-hidden -O3 -DNDEBUG -DNDEBUG 
    C++ flags (Debug):   -fsigned-char -W -Wall -Werror=return-type -Werror=non-virtual-dtor -Werror=address -Werror=sequence-point -Wformat -Werror=format-security -Wmissing-declarations -Wundef -Winit-self -Wpointer-arith -Wshadow -Wsign-promo -Wno-narrowing -Wno-delete-non-virtual-dtor -Wno-comment -fdiagnostics-show-option -Wno-long-long -pthread -fomit-frame-pointer -msse -msse2 -mno-avx -msse3 -mno-ssse3 -mno-sse4.1 -mno-sse4.2 -ffunction-sections -fvisibility=hidden -fvisibility-inlines-hidden -g -O0 -DDEBUG -D_DEBUG 
    C Compiler:     /usr/bin/cc 
    C flags (Release):   -fsigned-char -W -Wall -Werror=return-type -Werror=non-virtual-dtor -Werror=address -Werror=sequence-point -Wformat -Werror=format-security -Wmissing-declarations -Wmissing-prototypes -Wstrict-prototypes -Wundef -Winit-self -Wpointer-arith -Wshadow -Wno-narrowing -Wno-comment -fdiagnostics-show-option -Wno-long-long -pthread -fomit-frame-pointer -msse -msse2 -mno-avx -msse3 -mno-ssse3 -mno-sse4.1 -mno-sse4.2 -ffunction-sections -fvisibility=hidden -O3 -DNDEBUG -DNDEBUG 
    C flags (Debug):    -fsigned-char -W -Wall -Werror=return-type -Werror=non-virtual-dtor -Werror=address -Werror=sequence-point -Wformat -Werror=format-security -Wmissing-declarations -Wmissing-prototypes -Wstrict-prototypes -Wundef -Winit-self -Wpointer-arith -Wshadow -Wno-narrowing -Wno-comment -fdiagnostics-show-option -Wno-long-long -pthread -fomit-frame-pointer -msse -msse2 -mno-avx -msse3 -mno-ssse3 -mno-sse4.1 -mno-sse4.2 -ffunction-sections -fvisibility=hidden -g -O0 -DDEBUG -D_DEBUG 
    Linker flags (Release): 
    Linker flags (Debug): 
    ccache:      NO 
    Precompiled headers:   YES 
    Extra dependencies:   Qt5::Test Qt5::Concurrent Qt5::OpenGL /usr/lib/x86_64-linux-gnu/libwebp.so /usr/lib/x86_64-linux-gnu/libjasper.so /usr/lib/x86_64-linux-gnu/libImath.so /usr/lib/x86_64-linux-gnu/libIlmImf.so /usr/lib/x86_64-linux-gnu/libIex.so /usr/lib/x86_64-linux-gnu/libHalf.so /usr/lib/x86_64-linux-gnu/libIlmThread.so dc1394 avcodec-ffmpeg avformat-ffmpeg avutil-ffmpeg swscale-ffmpeg /usr/lib/libOpenNI.so Qt5::Core Qt5::Gui Qt5::Widgets /usr/lib/x86_64-linux-gnu/hdf5/serial/lib/libhdf5.so /usr/lib/x86_64-linux-gnu/libpthread.so /usr/lib/x86_64-linux-gnu/libsz.so /usr/lib/x86_64-linux-gnu/libdl.so /usr/lib/x86_64-linux-gnu/libm.so vtkRenderingOpenGL vtkImagingHybrid vtkIOImage vtkCommonDataModel vtkCommonMath vtkCommonCore vtksys vtkCommonMisc vtkCommonSystem vtkCommonTransforms vtkCommonExecutionModel vtkDICOMParser vtkIOCore /usr/lib/x86_64-linux-gnu/libz.so vtkmetaio /usr/lib/x86_64-linux-gnu/libjpeg.so /usr/lib/x86_64-linux-gnu/libpng.so /usr/lib/x86_64-linux-gnu/libtiff.so vtkImagingCore vtkRenderingCore vtkCommonColor vtkFiltersExtraction vtkFiltersCore vtkFiltersGeneral vtkCommonComputationalGeometry vtkFiltersStatistics vtkImagingFourier vtkalglib vtkFiltersGeometry vtkFiltersSources vtkInteractionStyle vtkRenderingLOD vtkFiltersModeling vtkIOPLY vtkIOGeometry /usr/lib/x86_64-linux-gnu/libjsoncpp.so vtkFiltersTexture vtkRenderingFreeType /usr/lib/x86_64-linux-gnu/libfreetype.so vtkftgl vtkIOExport vtkRenderingAnnotation vtkImagingColor vtkRenderingContext2D vtkRenderingGL2PS vtkRenderingContextOpenGL /usr/lib/libgl2ps.so vtkRenderingLabel dl m pthread rt /usr/lib/x86_64-linux-gnu/libGLU.so /usr/lib/x86_64-linux-gnu/libGL.so tbb 
    3rdparty dependencies:  libprotobuf 

    OpenCV modules: 
    To be built:     core flann hdf imgproc ml photo reg surface_matching video viz dnn freetype fuzzy imgcodecs shape videoio highgui objdetect plot superres ts xobjdetect xphoto bgsegm bioinspired dpm face features2d line_descriptor saliency text calib3d ccalib cvv datasets rgbd stereo tracking videostab xfeatures2d ximgproc aruco optflow phase_unwrapping stitching structured_light python2 
    Disabled:     world contrib_world 
    Disabled by dependency:  - 
    Unavailable:     cudaarithm cudabgsegm cudacodec cudafeatures2d cudafilters cudaimgproc cudalegacy cudaobjdetect cudaoptflow cudastereo cudawarping cudev java python3 cnn_3dobj matlab sfm 

    Non-free algorithms are enabled 

    GUI: 
    QT 5.x:      YES (ver 5.5.1) 
    QT OpenGL support:   YES (Qt5::OpenGL 5.5.1) 
    OpenGL support:    YES (/usr/lib/x86_64-linux-gnu/libGLU.so /usr/lib/x86_64-linux-gnu/libGL.so) 
    VTK support:     YES (ver 6.2.0) 

    Media I/O: 
    ZLib:      /usr/lib/x86_64-linux-gnu/libz.so (ver 1.2.8) 
    JPEG:      /usr/lib/x86_64-linux-gnu/libjpeg.so (ver) 
    WEBP:      /usr/lib/x86_64-linux-gnu/libwebp.so (ver encoder: 0x0202) 
    PNG:       /usr/lib/x86_64-linux-gnu/libpng.so (ver 1.2.54) 
    TIFF:      /usr/lib/x86_64-linux-gnu/libtiff.so (ver 42 - 4.0.6) 
    JPEG 2000:     /usr/lib/x86_64-linux-gnu/libjasper.so (ver 1.900.1) 
    OpenEXR:      /usr/lib/x86_64-linux-gnu/libImath.so /usr/lib/x86_64-linux-gnu/libIlmImf.so /usr/lib/x86_64-linux-gnu/libIex.so /usr/lib/x86_64-linux-gnu/libHalf.so /usr/lib/x86_64-linux-gnu/libIlmThread.so (ver 2.2.0) 
    GDAL:      NO 
    GDCM:      NO 

    Video I/O: 
    DC1394 1.x:     NO 
    DC1394 2.x:     YES (ver 2.2.4) 
    FFMPEG:      YES 
     avcodec:     YES (ver 56.60.100) 
     avformat:     YES (ver 56.40.101) 
     avutil:     YES (ver 54.31.100) 
     swscale:     YES (ver 3.1.101) 
     avresample:    NO 
    GStreamer:     NO 
    OpenNI:      YES (ver 1.5.4, build 0) 
    OpenNI PrimeSensor Modules: NO 
    OpenNI2:      NO 
    PvAPI:      NO 
    GigEVisionSDK:    NO 
    Aravis SDK:     NO 
    UniCap:      NO 
    UniCap ucil:     NO 
    V4L/V4L2:     NO/YES 
    XIMEA:      NO 
    Xine:      NO 
    gPhoto2:      NO 

    Parallel framework:   TBB (ver 4.4 interface 9002) 

    Other third-party libraries: 
    Use IPP:      9.0.1 [9.0.1] 
     at:      /home/ronjane92/Programs/opencv/opencv-3.2.0-build/3rdparty/ippicv/ippicv_lnx 
    Use IPP Async:    NO 
    Use VA:      NO 
    Use Intel VA-API/OpenCL:  NO 
    Use Lapack:     NO 
    Use Eigen:     YES (ver 3.2.92) 
    Use Cuda:     NO 
    Use OpenCL:     YES 
    Use OpenVX:     NO 
    Use custom HAL:    NO 

    OpenCL:      <Dynamic loading of OpenCL library> 
    Include path:    /home/ronjane92/Programs/opencv/opencv-3.2.0-source/3rdparty/include/opencl/1.2 
    Use AMDFFT:     NO 
    Use AMDBLAS:     NO 

    Python 2: 
    Interpreter:     /usr/bin/python2.7 (ver 2.7.12) 
    Libraries:     /usr/lib/x86_64-linux-gnu/libpython2.7.so (ver 2.7.12) 
    numpy:      /home/ronjane92/.local/lib/python2.7/site-packages/numpy/core/include (ver 1.13.1) 
    packages path:    lib/python2.7/dist-packages 

    Python 3: 
    Interpreter:     /usr/bin/python3 (ver 3.5.2) 

    Python (for build):   /usr/bin/python2.7 

    Java: 
    ant:       NO 
    JNI:       NO 
    Java wrappers:    NO 
    Java tests:     NO 

    Matlab:      Matlab not found or implicitly disabled 

    Documentation: 
    Doxygen:      /usr/bin/doxygen (ver 1.8.11) 

    Tests and samples: 
    Tests:      YES 
    Performance tests:   YES 
    C/C++ Examples:    NO 

    Install path:     /usr/local 

    cvconfig.h is in:    /home/ronjane92/Programs/opencv/opencv-3.2.0-build 
----------------------------------------------------------------- 

Configuring done 
Generating done 

Ceci est une question répétée je l'ai donc essayé de Google pour des solutions, mais aucun d'entre eux travaillaient dans ma situation. Quelqu'un qui peut m'aider? Merci.

+0

La question est plus probable de la façon dont OpenCV devrait être construit: http://answers.opencv.org/question/52001/how-to-compile-nonfree-module-in-opencv- 30-beta / – AlexanderVX

Répondre

1

Problème résolu. J'ai défini certaines fonctions et ces fonctions doivent être reliées aux bibliothèques OpenCV. Cependant, j'ajoute simplement FIND_PACKAGE et INCLUDE_DIRECTORIES à OpenCV dans le CMakeLists.txt dans le répertoire source mais dans celui du répertoire où sont placés les en-têtes et les sources. Tout se passe bien après l'ajout au répertoire lib.

Voir The solution