Компиляция надстройки узла с opencv на OS X и Heroku

У меня проблема с компиляцией надстройки узла с помощью opencv на os x и heroku. однако на ubuntu он работает нормально.

Я использую бродячий файл:

Vagrant.configure("2") do |config|
  config.vm.box = "ubuntu/trusty64"
  config.vm.provision :shell, :inline => $BOOTSTRAP_SCRIPT # see below
end

$BOOTSTRAP_SCRIPT = <<EOF
  set -e # Stop on any error

  # Make vagrant automatically go to /vagrant when we ssh in.
  echo "cd /vagrant" | sudo tee -a ~vagrant/.profile

  sudo apt-get update -y
  sudo apt-get install -y build-essential python g++ make curl git
  sudo apt-get install -y libopencv-dev libeigen3-dev

  curl http://nodejs.org/dist/v0.10.35/node-v0.10.35-linux-x64.tar.gz | \
    tar -C /usr/local/ --strip-components=1 -xvz; \
    npm update -g npm

  echo VAGRANT IS READY.
EOF

У меня есть binding.gyp файл:

    {
      "targets": [{
        "target_name": "module",
        "sources": [
          "node_src/module.cc",
          "src/Candidate.cpp",
          "src/Image.cpp",
          "src/LearnerEngine.cpp",
          "src/ShaheenTracker.cpp"
        ],
        'libraries': [
          '<!@(pkg-config --libs opencv)'
        ],
        'include_dirs': [
          'include/',
          "<!(node -e \"require('nan')\")"
        ],
        'cflags': [
          '<!@(pkg-config --cflags "opencv <= 3.0.0" )', '-std=c++11', '-Wall', '-fPIC'
        ],
        'cflags!': ['-fno-exceptions'],
        'cflags_cc!': ['-fPIC', '-fno-rtti', '-fno-exceptions', '--enable-auto-import'],
        "conditions": [
          ['OS=="mac"', {
            'xcode_settings': {
              'OTHER_CFLAGS': [
                "-mmacosx-version-min=10.7",
                "-std=c++11",
                "-stdlib=libc++",
                '<!@(pkg-config --cflags opencv)'
              ],
              "GCC_ENABLE_CPP_RTTI": "YES",
              "GCC_ENABLE_CPP_EXCEPTIONS": "YES"
            }
          }]
        ]
      }]
    }

В OS X я могу компилировать npm i нормально. Однако я не могу запустить его, так как получаю следующую ошибку:

1): Symbol not found: __ZNK2cv11_InputArray12getMatVectorERNSt3__16vectorINS_3MatENS1_9allocatorIS3_EEEE

На Heroku я использую https://github.com/ddollar/heroku-buildpack-apt, чтобы получить пакеты и следующий файл Aptfile:

libeigen3-dev
libopencv-dev

Однако я получаю следующую ошибку:

remote:        g++: error: /usr/lib/x86_64-linux-gnu/libopencv_calib3d.so: No such file or directory
remote:        g++: error: /usr/lib/x86_64-linux-gnu/libopencv_contrib.so: No such file or directory
remote:        g++: error: /usr/lib/x86_64-linux-gnu/libopencv_core.so: No such file or directory
remote:        g++: error: /usr/lib/x86_64-linux-gnu/libopencv_features2d.so: No such file or directory
remote:        g++: error: /usr/lib/x86_64-linux-gnu/libopencv_flann.so: No such file or directory
remote:        g++: error: /usr/lib/x86_64-linux-gnu/libopencv_gpu.so: No such file or directory
remote:        g++: error: /usr/lib/x86_64-linux-gnu/libopencv_highgui.so: No such file or directory
remote:        g++: error: /usr/lib/x86_64-linux-gnu/libopencv_imgproc.so: No such file or directory
remote:        g++: error: /usr/lib/x86_64-linux-gnu/libopencv_legacy.so: No such file or directory
remote:        g++: error: /usr/lib/x86_64-linux-gnu/libopencv_ml.so: No such file or directory
remote:        g++: error: /usr/lib/x86_64-linux-gnu/libopencv_objdetect.so: No such file or directory
remote:        g++: error: /usr/lib/x86_64-linux-gnu/libopencv_ocl.so: No such file or directory
remote:        g++: error: /usr/lib/x86_64-linux-gnu/libopencv_photo.so: No such file or directory
remote:        g++: error: /usr/lib/x86_64-linux-gnu/libopencv_stitching.so: No such file or directory
remote:        g++: error: /usr/lib/x86_64-linux-gnu/libopencv_superres.so: No such file or directory
remote:        g++: error: /usr/lib/x86_64-linux-gnu/libopencv_ts.so: No such file or directory
remote:        g++: error: /usr/lib/x86_64-linux-gnu/libopencv_video.so: No such file or directory
remote:        g++: error: /usr/lib/x86_64-linux-gnu/libopencv_videostab.so: No such file or directory

Я думаю, что это pkg-config проблема.

Что я делаю неправильно?


person Jonathan Ong    schedule 09.01.2015    source источник
comment
По-моему, вы не установили файлы libopencv _ *. So ... sudo apt-get install -y libopencv-dev устанавливает opencv или что-то еще? Потому что на любой странице из Google я вижу, что OpenCV установлен из репозитория git или из какого-то архива (.tar, .zip ...)   -  person sop    schedule 15.01.2015


Ответы (1)


libopencv-dev - это файл зависимостей. Вам все равно нужно загрузить основной файл из sourceforge или клонировать его из git, а затем выполнить make.

Установка OpenCV отдельно должна решить проблему.
http://wiki.nuigroup.com/Installing_OpenCV_on_Mac_OS_X < br> Вот сценарий, используемый для установки OpenCV в Ubuntu для справки
https://github.com/jayrambhia/Install-OpenCV/blob/master/Ubuntu/2.4/opencv2_4_5.sh


Надеюсь, это поможет !!

person udit7395    schedule 18.01.2015