firepick1 / FireSight

Pick and Place Vision Library
MIT License
50 stars 31 forks source link

Build fails on Rpi2 #29

Closed johnlauer closed 8 years ago

johnlauer commented 8 years ago

I'm trying to build on an Rpi2 that's running the standard Debian Wheezy. Here's the error I'm getting. I can't figure it out. Any thoughts? I'd like to try to make this part of ChiliPeppr.

[ 3%] Building CXX object CMakeFiles/firesight.dir/bgSub.cpp.o In file included from /home/pi/FireSight/bgSub.cpp:7:0: /home/pi/FireSight/FireSight.hpp:61:12: error: cannot declare field ‘firesight::HoleRecognizer::mser’ to be of abstract type ‘cv::MSER’ /usr/local/include/opencv2/features2d.hpp:208:20: note: because the following virtual functions are pure within ‘cv::MSER’: /usr/local/include/opencv2/features2d.hpp:217:26: note: virtual void cv::MSER::detectRegions(cv::InputArray, std::vector<std::vector<cv::Point > >&, std::vectorcv::Rect_&) /usr/local/include/opencv2/features2d.hpp:221:26: note: virtual void cv::MSER::setDelta(int) /usr/local/include/opencv2/features2d.hpp:222:25: note: virtual int cv::MSER::getDelta() const /usr/local/include/opencv2/features2d.hpp:224:26: note: virtual void cv::MSER::setMinArea(int) /usr/local/include/opencv2/features2d.hpp:225:25: note: virtual int cv::MSER::getMinArea() const /usr/local/include/opencv2/features2d.hpp:227:26: note: virtual void cv::MSER::setMaxArea(int) /usr/local/include/opencv2/features2d.hpp:228:25: note: virtual int cv::MSER::getMaxArea() const /usr/local/include/opencv2/features2d.hpp:230:26: note: virtual void cv::MSER::setPass2Only(bool) /usr/local/include/opencv2/features2d.hpp:231:26: note: virtual bool cv::MSER::getPass2Only() const /home/pi/FireSight/bgSub.cpp: In member function ‘bool firesight::Pipeline::apply_backgroundSubtractor(jsont, jsont, firesight::Model&)’: /home/pi/FireSight/bgSub.cpp:59:84: error: cannot allocate an object of abstract type ‘cv::BackgroundSubtractorMOG2’ /usr/local/include/opencv2/video/background_segm.hpp:76:20: note: because the following virtual functions are pure within ‘cv::BackgroundSubtractorMOG2’: /usr/local/include/opencv2/video/background_segm.hpp:62:26: note: virtual void cv::BackgroundSubtractor::apply(cv::InputArray, cv::OutputArray, double) /usr/local/include/opencv2/video/background_segm.hpp:65:26: note: virtual void cv::BackgroundSubtractor::getBackgroundImage(cv::OutputArray) const /usr/local/include/opencv2/video/background_segm.hpp:79:25: note: virtual int cv::BackgroundSubtractorMOG2::getHistory() const /usr/local/include/opencv2/video/background_segm.hpp:80:26: note: virtual void cv::BackgroundSubtractorMOG2::setHistory(int) /usr/local/include/opencv2/video/background_segm.hpp:82:25: note: virtual int cv::BackgroundSubtractorMOG2::getNMixtures() const /usr/local/include/opencv2/video/background_segm.hpp:83:26: note: virtual void cv::BackgroundSubtractorMOG2::setNMixtures(int) /usr/local/include/opencv2/video/background_segm.hpp:85:28: note: virtual double cv::BackgroundSubtractorMOG2::getBackgroundRatio() const /usr/local/include/opencv2/video/background_segm.hpp:86:26: note: virtual void cv::BackgroundSubtractorMOG2::setBackgroundRatio(double) /usr/local/include/opencv2/video/background_segm.hpp:88:28: note: virtual double cv::BackgroundSubtractorMOG2::getVarThreshold() const /usr/local/include/opencv2/video/background_segm.hpp:89:26: note: virtual void cv::BackgroundSubtractorMOG2::setVarThreshold(double) /usr/local/include/opencv2/video/background_segm.hpp:91:28: note: virtual double cv::BackgroundSubtractorMOG2::getVarThresholdGen() const /usr/local/include/opencv2/video/background_segm.hpp:92:26: note: virtual void cv::BackgroundSubtractorMOG2::setVarThresholdGen(double) /usr/local/include/opencv2/video/background_segm.hpp:94:28: note: virtual double cv::BackgroundSubtractorMOG2::getVarInit() const /usr/local/include/opencv2/video/background_segm.hpp:95:26: note: virtual void cv::BackgroundSubtractorMOG2::setVarInit(double) /usr/local/include/opencv2/video/background_segm.hpp:97:28: note: virtual double cv::BackgroundSubtractorMOG2::getVarMin() const /usr/local/include/opencv2/video/background_segm.hpp:98:26: note: virtual void cv::BackgroundSubtractorMOG2::setVarMin(double) /usr/local/include/opencv2/video/background_segm.hpp:100:28: note: virtual double cv::BackgroundSubtractorMOG2::getVarMax() const /usr/local/include/opencv2/video/background_segm.hpp:101:26: note: virtual void cv::BackgroundSubtractorMOG2::setVarMax(double) /usr/local/include/opencv2/video/background_segm.hpp:103:28: note: virtual double cv::BackgroundSubtractorMOG2::getComplexityReductionThreshold() const /usr/local/include/opencv2/video/background_segm.hpp:104:26: note: virtual void cv::BackgroundSubtractorMOG2::setComplexityReductionThreshold(double) /usr/local/include/opencv2/video/background_segm.hpp:106:26: note: virtual bool cv::BackgroundSubtractorMOG2::getDetectShadows() const /usr/local/include/opencv2/video/background_segm.hpp:107:26: note: virtual void cv::BackgroundSubtractorMOG2::setDetectShadows(bool) /usr/local/include/opencv2/video/background_segm.hpp:109:25: note: virtual int cv::BackgroundSubtractorMOG2::getShadowValue() const /usr/local/include/opencv2/video/background_segm.hpp:110:26: note: virtual void cv::BackgroundSubtractorMOG2::setShadowValue(int) /usr/local/include/opencv2/video/background_segm.hpp:112:28: note: virtual double cv::BackgroundSubtractorMOG2::getShadowThreshold() const /usr/local/include/opencv2/video/background_segm.hpp:113:26: note: virtual void cv::BackgroundSubtractorMOG2::setShadowThreshold(double) /home/pi/FireSight/bgSub.cpp:75:46: error: ‘CV_LOAD_IMAGE_GRAYSCALE’ was not declared in this scope /home/pi/FireSight/bgSub.cpp:77:46: error: ‘CV_LOAD_IMAGE_COLOR’ was not declared in this scope /home/pi/FireSight/bgSub.cpp:100:34: error: ‘CV_BGR2GRAY’ was not declared in this scope /home/pi/FireSight/bgSub.cpp:105:24: error: ‘class cv::BackgroundSubtractor’ has no member named ‘operator()’ /home/pi/FireSight/bgSub.cpp:107:29: error: ‘class cv::BackgroundSubtractor’ has no member named ‘operator()’ CMakeFiles/_firesight.dir/build.make:54: recipe for target 'CMakeFiles/_firesight.dir/bgSub.cpp.o' failed make[2]: * [CMakeFiles/_firesight.dir/bgSub.cpp.o] Error 1 CMakeFiles/Makefile2:60: recipe for target 'CMakeFiles/_firesight.dir/all' failed make[1]: * [CMakeFiles/_firesight.dir/all] Error 2 Makefile:133: recipe for target 'all' failed make: *\ [all] Error 2 ERROR : make failed (RC=2) pi@raspi2 ~/FireSight $

firepick1 commented 8 years ago

John,

Hmmmm. We havent used Wheezy in ages. It was always a pain with opencv. Any chance you could try with Jessie? It is much friendlier.

Glad about the ChiliPepper interest. We are connecting to TinyG via firenodejs, which integrates FireSight. The firenodejs integration may provide insight into REST api for FireSight.

Karl

On Saturday, January 30, 2016, John Lauer notifications@github.com wrote:

I'm trying to build on an Rpi2 that's running the standard Debian Wheezy Here's the error I'm getting I can't figure it out Any thoughts? I'd like to try to make this part of ChiliPeppr

[ 3%] Building CXX object CMakeFiles/

firesightdir/bgSubcppo In file included from /home/pi/FireSight/bgSubcpp:7:0: /home/pi/FireSight/FireSighthpp:61:12: error: cannot declare field ‘firesight::HoleRecognizer::mser’ to be of abstract type ‘cv::MSER’ /usr/local/include/opencv2/features2dhpp:208:20: note: because the following virtual functions are pure within ‘cv::MSER’: /usr/local/include/opencv2/features2dhpp:217:26: note: virtual void cv::MSER::detectRegions(cv::InputArray, std::vector<std::vector<cv::Point

&, std::vectorcv::Rect_&) /usr/local/include/opencv2/features2dhpp:221:26: note: virtual void cv::MSER::setDelta(int) /usr/local/include/opencv2/features2dhpp:222:25: note: virtual int cv::MSER::getDelta() const /usr/local/include/opencv2/features2dhpp:224:26: note: virtual void cv::MSER::setMinArea(int) /usr/local/include/opencv2/features2dhpp:225:25: note: virtual int cv::MSER::getMinArea() const /usr/local/include/opencv2/features2dhpp:227:26: note: virtual void cv::MSER::setMaxArea(int) /usr/local/include/opencv2/features2dhpp:228:25: note: virtual int cv::MSER::getMaxArea() const /usr/local/include/opencv2/features2dhpp:230:26: note: virtual void cv::MSER::setPass2Only(bool) /usr/local/include/opencv2/features2dhpp:231:26: note: virtual bool cv::MSER::getPass2Only() const /home/pi/FireSight/bgSubcpp: In member function ‘bool firesight::Pipeline::apply_backgroundSubtractor(jsont, jsont, firesight::Model&)’: /home/pi/FireSight/bgSubcpp:59:84: error: cannot allocate an object of abstract type ‘cv::BackgroundSubtractorMOG2’ /usr/local/include/opencv2/video/background_segmhpp:76:20: note: because the following virtual functions are pure within ‘cv::BackgroundSubtractorMOG2’: /usr/local/include/opencv2/video/background_segmhpp:62:26: note: virtual void cv::BackgroundSubtractor::apply(cv::InputArray, cv::OutputArray, double) /usr/local/include/opencv2/video/background_segmhpp:65:26: note: virtual void cv::BackgroundSubtractor::getBackgroundImage(cv::OutputArray) const /usr/local/include/opencv2/video/background_segmhpp:79:25: note: virtual int cv::BackgroundSubtractorMOG2::getHistory() const /usr/local/include/opencv2/video/background_segmhpp:80:26: note: virtual void cv::BackgroundSubtractorMOG2::setHistory(int) /usr/local/include/opencv2/video/background_segmhpp:82:25: note: virtual int cv::BackgroundSubtractorMOG2::getNMixtures() const /usr/local/include/opencv2/video/background_segmhpp:83:26: note: virtual void cv::BackgroundSubtractorMOG2::setNMixtures(int) /usr/local/include/opencv2/video/background_segmhpp:85:28: note: virtual double cv::BackgroundSubtractorMOG2::getBackgroundRatio() const /usr/local/include/opencv2/video/background_segmhpp:86:26: note: virtual void cv::BackgroundSubtractorMOG2::setBackgroundRatio(double) /usr/local/include/opencv2/video/background_segmhpp:88:28: note: virtual double cv::BackgroundSubtractorMOG2::getVarThreshold() const /usr/local/include/opencv2/video/background_segmhpp:89:26: note: virtual void cv::BackgroundSubtractorMOG2::setVarThreshold(double) /usr/local/include/opencv2/video/background_segmhpp:91:28: note: virtual double cv::BackgroundSubtractorMOG2::getVarThresholdGen() const /usr/local/include/opencv2/video/background_segmhpp:92:26: note: virtual void cv::BackgroundSubtractorMOG2::setVarThresholdGen(double) /usr/local/include/opencv2/video/background_segmhpp:94:28: note: virtual double cv::BackgroundSubtractorMOG2::getVarInit() const /usr/local/include/opencv2/video/background_segmhpp:95:26: note: virtual void cv::BackgroundSubtractorMOG2::setVarInit(double) /usr/local/include/opencv2/video/background_segmhpp:97:28: note: virtual double cv::BackgroundSubtractorMOG2::getVarMin() const /usr/local/include/opencv2/video/background_segmhpp:98:26: note: virtual void cv::BackgroundSubtractorMOG2::setVarMin(double) /usr/local/include/opencv2/video/background_segmhpp[image: :100:]28: note: virtual double cv::BackgroundSubtractorMOG2::getVarMax() const /usr/local/include/opencv2/video/background_segmhpp:101:26: note: virtual void cv::BackgroundSubtractorMOG2::setVarMax(double) /usr/local/include/opencv2/video/background_segmhpp:103:28: note: virtual double cv::BackgroundSubtractorMOG2::getComplexityReductionThreshold() const /usr/local/include/opencv2/video/background_segmhpp:104:26: note: virtual void cv::BackgroundSubtractorMOG2::setComplexityReductionThreshold(double) /usr/local/include/opencv2/video/background_segmhpp:106:26: note: virtual bool cv::BackgroundSubtractorMOG2::getDetectShadows() const /usr/local/include/opencv2/video/background_segmhpp:107:26: note: virtual void cv::BackgroundSubtractorMOG2::setDetectShadows(bool) /usr/local/include/opencv2/video/background_segmhpp:109:25: note: virtual int cv::BackgroundSubtractorMOG2::getShadowValue() const /usr/local/include/opencv2/video/background_segmhpp:110:26: note: virtual void cv::BackgroundSubtractorMOG2::setShadowValue(int) /usr/local/include/opencv2/video/background_segmhpp:112:28: note: virtual double cv::BackgroundSubtractorMOG2::getShadowThreshold() const /usr/local/include/opencv2/video/background_segmhpp:113:26: note: virtual void cv::BackgroundSubtractorMOG2::setShadowThreshold(double) /home/pi/FireSight/bgSubcpp:75:46: error: ‘CV_LOAD_IMAGE_GRAYSCALE’ was not declared in this scope /home/pi/FireSight/bgSubcpp:77:46: error: ‘CV_LOAD_IMAGE_COLOR’ was not declared in this scope /home/pi/FireSight/bgSubcpp[image: :100:]34: error: ‘CV_BGR2GRAY’ was not declared in this scope /home/pi/FireSight/bgSubcpp:105:24: error: ‘class cv::BackgroundSubtractor’ has no member named ‘operator()’ /home/pi/FireSight/bgSubcpp:107:29: error: ‘class cv::BackgroundSubtractor’ has no member named ‘operator()’ CMakeFiles/_firesightdir/buildmake:54: recipe for target 'CMakeFiles/_firesightdir/bgSubcppo' failed make[2]: * [CMakeFiles/_firesightdir/bgSubcppo] Error 1 CMakeFiles/Makefile2:60: recipe for target 'CMakeFiles/_firesightdir/all' failed make[1]: * [CMakeFiles/_firesightdir/all] Error 2 Makefile:133: recipe for target 'all' failed make: *\ [all] Error 2 ERROR : make failed (RC=2) pi@raspi2 ~/FireSight $

— Reply to this email directly or view it on GitHub https://github.com/firepick1/FireSight/issues/29.

Karl Lew FIREPICK SERVICES LLC karl@firepick.org www.firepick.org

chilipeppr commented 8 years ago

Hey, i finally got around to trying to build this on Jessie and I got this failure. Do I need to install the OpenCV libraries first? If so, how do I do that best to work with FirePick?

--   dir='/home/pi/FireSight/jannson/src'
--   dir='/usr/local/include'
--   dir='/usr/include'
CMake Error at CMakeLists.txt:75 (find_package):
  By not providing "FindOpenCV.cmake" in CMAKE_MODULE_PATH this project has
  asked CMake to find a package configuration file provided by "OpenCV", but
  CMake did not find one.

  Could not find a package configuration file provided by "OpenCV" with any
  of the following names:

    OpenCVConfig.cmake
    opencv-config.cmake

  Add the installation prefix of "OpenCV" to CMAKE_PREFIX_PATH or set
  "OpenCV_DIR" to a directory containing one of the above files.  If "OpenCV"
  provides a separate development package or SDK, be sure it has been
  installed.

-- Configuring incomplete, errors occurred!
See also "/home/pi/FireSight/CMakeFiles/CMakeOutput.log".
ERROR   : cmake failed (RC=1)
pi@raspi3:~/FireSight $
simonfojtu commented 8 years ago

Hi John,

yes, install OpenCV first, then you can point CMake to its directory. I believe that master branch of FireSight works with Opencv 2.4.8, so I would try that first.

Simon

On Tue, Apr 5, 2016 at 7:21 PM, John Lauer notifications@github.com wrote:

Hey, i finally got around to trying to build this on Jessie and I got this failure. Do I need to install the OpenCV libraries first? If so, how do I do that best to work with FirePick?

-- dir='/home/pi/FireSight/jannson/src' -- dir='/usr/local/include' -- dir='/usr/include' CMake Error at CMakeLists.txt:75 (find_package): By not providing "FindOpenCV.cmake" in CMAKE_MODULE_PATH this project has asked CMake to find a package configuration file provided by "OpenCV", but CMake did not find one.

Could not find a package configuration file provided by "OpenCV" with any of the following names:

OpenCVConfig.cmake
opencv-config.cmake

Add the installation prefix of "OpenCV" to CMAKE_PREFIX_PATH or set "OpenCV_DIR" to a directory containing one of the above files. If "OpenCV" provides a separate development package or SDK, be sure it has been installed.

-- Configuring incomplete, errors occurred! See also "/home/pi/FireSight/CMakeFiles/CMakeOutput.log". ERROR : cmake failed (RC=1) pi@raspi3:~/FireSight $

— You are receiving this because you are subscribed to this thread. Reply to this email directly or view it on GitHub https://github.com/firepick1/FireSight/issues/29#issuecomment-205906584

johnlauer commented 8 years ago

Is this the best guide to follow for installing OpenCV 2.4 on Raspi Jessie such that it works with FireSight?

http://www.pyimagesearch.com/2015/02/23/install-opencv-and-python-on-your-raspberry-pi-2-and-b/

chilipeppr commented 8 years ago

Any chance you guys could provide a pre-built binary? It seems near impossible to get OpenCV to build. Can't get 2.4.8 anymore. Can't get 2.4.10 or .11 to build.

firepick1 commented 8 years ago

John,

We use apt-get for the binary. https://github.com/firepick1/firenodejs/wiki/Raspberry%20Pi

Hopefully that still works?

Karl

On Tuesday, April 5, 2016, John Lauer notifications@github.com wrote:

Any chance you guys could provide a pre-built binary? It seems near impossible to get OpenCV to build. Can't get 2.4.8 anymore. Can't get 2.4.10 or .11 to build.

— You are receiving this because you commented. Reply to this email directly or view it on GitHub https://github.com/firepick1/FireSight/issues/29#issuecomment-206037557

Karl Lew FIREPICK SERVICES LLC karl@firepick.org www.firepick.org

johnlauer commented 8 years ago

Wow, that was easy.

sudo apt-get install build-essential
sudo apt-get install libopencv-dev
git clone git://github.com/firepick1/FireSight
cd FireSight
./build

And I can run... pi@raspi3:~ $ firesight -p FireSight/json/pipeline0.json -i circuitboard.png -o circuitboard.jpg

And I get awesomeness! Nice work guys. circuitboard

firepick1 commented 8 years ago

Yahooo! 😀

On Tuesday, April 5, 2016, John Lauer notifications@github.com wrote:

Wow, that was easy.

sudo apt-get install build-essential sudo apt-get install libopencv-dev git clone git://github.com/firepick1/FireSight cd FireSight ./build

And I can run... pi@raspi3:~ $ firesight -p FireSight/json/pipeline0.json -i circuitboard.png -o circuitboard.jpg

And I get awesomeness! Nice work guys. [image: circuitboard] https://cloud.githubusercontent.com/assets/992149/14302413/6de82f92-fb55-11e5-8dbd-b8afab9d1f68.jpg

— You are receiving this because you commented. Reply to this email directly or view it on GitHub https://github.com/firepick1/FireSight/issues/29#issuecomment-206050580

Karl Lew FIREPICK SERVICES LLC karl@firepick.org www.firepick.org