【问题标题】:Mex Configuration in MATLAB for OpticalFlow.cpp codeMATLAB 中用于 OpticalFlow.cpp 代码的 Mex 配置
【发布时间】:2015-07-24 09:42:16
【问题描述】:

你好, 我正在使用光流 Matlab/C++ 代码 (source code)。我在 Linux-Ubuntu 14.04 64 位操作系统下使用 MATLAB。在配置文件中它说:

在编译之前,请检查子文件夹“mex”中的 project.h 文件。如果您使用 Windows,则无需执行任何操作。如果您使用 Mac Os 或 Linux,请取消注释 #define _LINUX_MAC 行。

这已经完成了。同样如下:

在 Matlab 中,适当配置 mex 后,将目录更改为“mex”并运行以下命令:

mex Coarse2FineTwoFrames.cpp OpticalFlow.cpp GaussianPyramid.cpp

我认为是由于在 MATLAB 中没有正确配置 mex 编译器,运行上述 mex-command 后收到以下错误:

Warning: You are using gcc version '4.8.2'. The version of gcc is not
supported. The version currently supported with MEX is '4.7.x'. For a list
of currently supported compilers see:
http://www.mathworks.com/support/compilers/current_release. 
Warning: You are using gcc version '4.8.2-19ubuntu1)'. The version of gcc
is not supported. The version currently supported with MEX is '4.7.x'. For
a list of currently supported compilers see:
 http://www.mathworks.com/support/compilers/current_release. 
  Error using mex In file included from /home/labrador/Yashar_BTSync /yasharBTSync /Multimedi Recommender Systems/Video    Classification/test_opticalFlow2/OpticalFlow      /me   x/Coarse2FineTwoFrames.cpp:2:0 /home/labrador/Yashar_BTSync/yasharBTSync/Multimedia Recommender Systems/Video Classification/test_opticalFlow2/OpticalFlow/mex/project.h:7:3: error: stray ‘#’ in program
% #define _OPENCV
 In file included from /home/labrador/Yashar_BTSync/yasharBTSync/Multimedia Recommender Systems/Video
 Classification/test_opticalFlow2/OpticalFlow/mex/Image.h:11:0,
             from /home/labrador/Yashar_BTSync/yasharBTSync/Multimedia
             Recommender Systems/Video
             Classification/test_opticalFlow2/OpticalFlow   /mex/Coarse2FineTwoFrames.cpp:3:
             /home/labrador/Yashar_BTSync/yasharBTSync/Multimedia
             Recommender Systems/Video
             Classification/test_opticalFlow2/OpticalFlow/mex/Stochastic.h:11:13:
             warning: extra tokens at end of #ifndef directive
             [enabled by default]
 #ifndef _abs(x)

         ^
  In file included from /home/labrador/Yashar_BTSync/yasharBTSync/Multimedia
   Recommender Systems/Video
  Classification/test_opticalFlow2/OpticalFlow/mex/OpticalFlow.h:4:0,
             from /home/labrador/Yashar_BTSync/yasharBTSync/Multimedia
             Recommender Systems/Video
             Classification/test_opticalFlow2/OpticalFlow     /mex/Coarse2FineTwoFrames.cpp:4:
             /home/labrador/Yashar_BTSync/yasharBTSync/Multimedia
             Recommender Systems/Video
             Classification/test_opticalFlow2/OpticalFlow/mex/NoiseModel.h:6:0:
             warning: "PI" redefined [enabled by default]
    #define PI 3.1415926535897932384626433832
   In file included from /home/labrador/Yashar_BTSync/yasharBTSync/Multimedia Recommender Systems/Video Classification/test_opticalFlow2/OpticalFlow/mex/Image.h:11:0,
             from /home/labrador/Yashar_BTSync/yasharBTSync/Multimedia
             Recommender Systems/Video
             Classification/test_opticalFlow2/OpticalFlow   /mex/Coarse2FineTwoFrames.cpp:3:
             /home/labrador/Yashar_BTSync/yasharBTSync/Multimedia
             Recommender Systems/Video
             Classification/test_opticalFlow2/OpticalFlow   /mex/Stochastic.h:16:0:
             note: this is the location of the previous definition
 #define PI 3.1415927 In file included from /home/labrador/Yashar_BTSync/yasharBTSync/Multimedia Recommender Systems/Video
 Classification/test_opticalFlow2/OpticalFlow    
 /mex/Coarse2FineTwoFrames.cpp:2:0:/home/labrador/Yashar_BTSync/yasharBTSync/Multimedia Recommender
 Systems/Video
 Classification/test_opticalFlow2/OpticalFlow/mex/project.h:7:1: error:
 expected unqualified-id before ‘%’ token
 % #define _OPENCV

^

请问我该如何解决这个问题?

【问题讨论】:

  • 猜想...应该说#ifndef _abs 没有(x)
  • 你有没有用“%”来注释C++代码中的一行?

标签: c++ linux matlab gcc mex


【解决方案1】:

在 Linux 服务器上的 MATLAB 中使用 OpticalFlow 时,我也遇到了这个问题。我通过添加一个选项 -compatibleArrayDims 来解决这个问题,

mex -compatibleArrayDims Coarse2FineTwoFrames.cpp OpticalFlow.cpp GaussianPyramid.cpp

【讨论】:

  • 您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-06-09
  • 2014-09-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多