Open bchao1 opened 3 years ago
Hi. @bchao1 Are you saying that building samples failed?
Try following build instruction:
developer@de01b56f2148:/tmp$ git clone https://github.com/fixstars/libSGM
Cloning into 'libSGM'...
remote: Enumerating objects: 2129, done.
remote: Total 2129 (delta 0), reused 0 (delta 0), pack-reused 2129
Receiving objects: 100% (2129/2129), 346.91 KiB | 595.00 KiB/s, done.
Resolving deltas: 100% (1384/1384), done.
developer@de01b56f2148:/tmp$ cd libSGM/
developer@de01b56f2148:/tmp/libSGM$ mkdir build
developer@de01b56f2148:/tmp/libSGM$ cd build/
developer@de01b56f2148:/tmp/libSGM/build$ cmake .. -DENABLE_SAMPLES=on
developer@de01b56f2148:/tmp/libSGM/build$ make
developer@de01b56f2148:/tmp/libSGM/build$ ls sample/image/
CMakeFiles Makefile cmake_install.cmake stereo_test
After executing the above commands, I got the following error message:
[ 68%] Building CXX object sample/image/CMakeFiles/stereo_test.dir/stereosgm_image.cpp.o
[ 72%] Linking CXX executable stereo_test
CMakeFiles/stereo_test.dir/stereosgm_image.cpp.o: In function `std::string cv::CommandLineParser::get<std::string>(std::string const&, bool) const':
stereosgm_image.cpp:(.text._ZNK2cv17CommandLineParser3getISsEET_RKSsb[_ZNK2cv17CommandLineParser3getISsEET_RKSsb]+0x32): undefined reference to `cv::CommandLineParser::getByName(std::string const&, bool, cv::Param, void*) const'
CMakeFiles/stereo_test.dir/stereosgm_image.cpp.o: In function `main':
stereosgm_image.cpp:(.text.startup+0x87): undefined reference to `cv::CommandLineParser::CommandLineParser(int, char const* const*, std::string const&)'
stereosgm_image.cpp:(.text.startup+0xca): undefined reference to `cv::CommandLineParser::has(std::string const&) const'
stereosgm_image.cpp:(.text.startup+0x16f): undefined reference to `cv::imread(std::string const&, int)'
stereosgm_image.cpp:(.text.startup+0x1ec): undefined reference to `cv::imread(std::string const&, int)'
stereosgm_image.cpp:(.text.startup+0x273): undefined reference to `cv::CommandLineParser::getByName(std::string const&, bool, cv::Param, void*) const'
stereosgm_image.cpp:(.text.startup+0x2da): undefined reference to `cv::CommandLineParser::getByName(std::string const&, bool, cv::Param, void*) const'
stereosgm_image.cpp:(.text.startup+0x33c): undefined reference to `cv::CommandLineParser::getByName(std::string const&, bool, cv::Param, void*) const'
stereosgm_image.cpp:(.text.startup+0x3a1): undefined reference to `cv::CommandLineParser::getByName(std::string const&, bool, cv::Param, void*) const'
stereosgm_image.cpp:(.text.startup+0x40c): undefined reference to `cv::CommandLineParser::getByName(std::string const&, bool, cv::Param, void*) const'
CMakeFiles/stereo_test.dir/stereosgm_image.cpp.o:stereosgm_image.cpp:(.text.startup+0x46d): more undefined references to `cv::CommandLineParser::getByName(std::string const&, bool, cv::Param, void*) const' follow
CMakeFiles/stereo_test.dir/stereosgm_image.cpp.o: In function `main':
stereosgm_image.cpp:(.text.startup+0xfd1): undefined reference to `cv::setWindowTitle(std::string const&, std::string const&)'
stereosgm_image.cpp:(.text.startup+0x1048): undefined reference to `cv::imshow(std::string const&, cv::_InputArray const&)'
collect2: error: ld returned 1 exit status
sample/image/CMakeFiles/stereo_test.dir/build.make:149: recipe for target 'sample/image/stereo_test' failed
make[2]: *** [sample/image/stereo_test] Error 1
CMakeFiles/Makefile2:147: recipe for target 'sample/image/CMakeFiles/stereo_test.dir/all' failed
make[1]: *** [sample/image/CMakeFiles/stereo_test.dir/all] Error 2
Makefile:129: recipe for target 'all' failed
make: *** [all] Error 2
CMake checks OpenCV exists before build. From your log, linking OpenCV failed. So I suspect that OpenCV installation failed.
Did you succeed to build any programs using OpenCV?
I'm using opencv4 and I'm sure that I've got opencv on my computer. I added some messages in the top-level CMakeLists.txt:
-- Found OpenCV: /usr/local (found version "4.2.0")
-- OpenCV library status:
-- version: 4.2.0
-- libraries: opencv_calib3d;opencv_core;opencv_dnn;opencv_features2d;opencv_flann;opencv_gapi;opencv_highgui;opencv_imgcodecs;opencv_imgproc;opencv_ml;opencv_objdetect;opencv_photo;opencv_stitching;opencv_video;opencv_videoio;opencv_aruco;opencv_bgsegm;opencv_bioinspired;opencv_ccalib;opencv_cudaarithm;opencv_cudabgsegm;opencv_cudafeatures2d;opencv_cudafilters;opencv_cudaimgproc;opencv_cudalegacy;opencv_cudaobjdetect;opencv_cudaoptflow;opencv_cudastereo;opencv_cudawarping;opencv_cudev;opencv_datasets;opencv_dnn_objdetect;opencv_dnn_superres;opencv_dpm;opencv_face;opencv_freetype;opencv_fuzzy;opencv_hdf;opencv_hfs;opencv_img_hash;opencv_line_descriptor;opencv_optflow;opencv_phase_unwrapping;opencv_plot;opencv_quality;opencv_reg;opencv_rgbd;opencv_saliency;opencv_sfm;opencv_shape;opencv_stereo;opencv_structured_light;opencv_superres;opencv_surface_matching;opencv_text;opencv_tracking;opencv_videostab;opencv_xfeatures2d;opencv_ximgproc;opencv_xobjdetect;opencv_xphoto
-- include path: /usr/local/include/opencv4
Not sure why make is not successfully compiling though. Thanks!
How can I manually compile a single sample in the samples/
folder?
I haven't tried that. I think it needs to build after Add specify link instruction to CMakeLists.txt manually.
Hello @bchao1 , did you try to append at the file specified below, just after core
, the words highgui
and imgproc
? Maybe that is what is left. Please tell me if that works for you.
https://github.com/fixstars/libSGM/blob/b44351ba8a4ac61d3a87ae4e4224782674bab6b5/CMakeLists.txt#L28
Who knows if that should be added at the file below as well. https://github.com/fixstars/libSGM/blob/b44351ba8a4ac61d3a87ae4e4224782674bab6b5/sample/image_cv_gpumat/CMakeLists.txt#L11
After building libsgm by following the steps in README, I tested out code in
sample/image
. I executed the following:and got the following error:
Why is this error happening?