显着性模型 - BMS(设置错误)

时间:2018-03-06 18:32:17

标签: linux matlab opencv

我已经下载了一个名为BMS的显着性模型"利用显着性检测的周围性:布尔图方法"来自here - available online。该代码已在Windows上实现和测试。

我正在尝试在我的机器(Linux Mint)上设置,通过阅读文件" readme.txt" 中包内的指令。该文件说:

  
      
  1. 将提取的文件放在
  2. 中   
  3. 安装OpenCV 2.40 +。
  4.   
  5. 转到 / mex / 并指定相关的OpenCV路径   开始 compile.m
  6.   
  7. 在Matlab中运行 compile.m
  8.   
  9. 转到 并在Matlab中运行 demo.m
  10.   

我在 compile.m 文件中设置了OpenCV的路径:

opts.opencv_include_path    =   '-I/usr/local/include/opencv2/ -I/usr/local/include/'; % OpenCV include path
opts.opencv_lib_path        =   '/usr/lib/libopencv*'; % OpenCV lib path

但是,这给了我错误:

Error using compile>pkg_config (line 74)
OpenCV include path not found: -I/usr/local/include/opencv2/ -I/usr/local/include/

Error in compile (line 34)
[cv_cflags,cv_libs] = pkg_config(opts);

我已经检查了OpenCV包的路径,一切都很好,但在MATLAB中, compile.m 无法检测到文件。我已经尝试了在线提供的所有选项,但没有任何效果。

请帮我运行代码,谢谢!

1 个答案:

答案 0 :(得分:1)

我认为您的系统中缺少OpenCV lib。您可以通过9个步骤安装它:

  1. sudo apt-get install build-essential cmake pkg-config libjpeg8-dev libtiff5-dev libjasper-dev libpng12-dev libavcodec-dev libavformat-dev libswscale-dev libv4l-dev libxvidcore-dev libx264-dev libgtk-3-dev libatlas-base-dev gfortran
  2. wget https://github.com/opencv/opencv/archive/3.4.1.zip
  3. unzip opencv-3.4.1.zip
  4. cd opencv-3.4.1/
  5. wget https://github.com/Itseez/opencv_contrib/archive/3.4.1.zip
  6. unzip 3.4.1.zip
  7. mkdir -p build && cd build
  8. cmake -D WITH_TBB=OFF -D WITH_OPENMP=ON -D WITH_IPP=ON -D CMAKE_BUILD_TYPE=RELEASE -D BUILD_EXAMPLES=OFF -D WITH_NVCUVID=OFF -D WITH_CUDA=OFF -D BUILD_DOCS=OFF -D BUILD_PERF_TESTS=OFF -D BUILD_TESTS=OFF -D WITH_CSTRIPES=ON -D WITH_OPENCL=ON -D WITH_MATLAB=ON -D WITH_LAPACK=ON -D WITH_PNG=ON -D WITH_FFMPEG=ON -D BUILD_opencv_python2=ON -D BUILD_opencv_python3=ON -D BUILD_opencv_python_bindings_generator=ON -D PYTHON2_EXECUTABLE=/usr/bin/python2.7 -D PYTHON2_INCLUDE_DIR=/usr/include/python2.7 -D PYTHON2_LIBRARY=/usr/lib/x86_64-linux-gnu/libpython2.7.so -D PYTHON2_NUMPY_INCLUDE_DIRS=/usr/local/lib/python2.7/dist-packages/numpy/core/include -D PYTHON2_PACKAGES_PATH=lib/python2.7/dist-packages -D PYTHON3_EXECUTABLE=/usr/bin/python3 -D PYTHON3_INCLUDE_DIR=/usr/include/python3.5m -D PYTHON3_LIBRARY=/usr/lib/x86_64-linux-gnu/libpython3.5m.so -D PYTHON3_NUMPY_INCLUDE_DIRS=/usr/lib/python3/dist-packages/numpy/core/include PYTHON3_PACKAGES_PATH=lib/python3.5/dist-packages -D CMAKE_INSTALL_PREFIX=/usr/local/ -DOPENCV_EXTRA_MODULES_PATH=../opencv_contrib-3.4.1/modules ..
  9. make -j 8
  10. sudo make install
  11. 安装OpenCV后,您可以编译BMS。在Matlab中,设置变量opts.opencv_include_path=/usr/local/include/opencv2/opts.opencv_lib_path=/usr/local/lib/

    警告:测试上述命令是否足以在您的机器中进行编译。可能不需要以下命令。 我在这里遇到了一些问题(可能是因为我使用的是Octave而不是Matlab)。问题是:

    • mexBMS.cpp中包含的文件:29:0: BMS.h:44:2:错误:'vector'没有命名类型

    您可以通过在BMS.h的第32行添加以下语句来解决此问题:using namespace std;

    • MxArray.cpp:484:55:错误:无效转换为'const value_type * {aka const int *}'到'mwIndex * {aka int *}'[-fpermissive]

    MxArray.cpp的第484行添加以下语句:

    int* pointer; *pointer = si[0];

    • g ++:错误:BMS.obj:没有这样的文件或目录

    在{compile.m。

    的第52行将BMS.obj MxArray.obj替换为BMS.o MxArray.o