Home > Vision > Linux下Matlab使用Mex调用OpenCV库函数

Linux下Matlab使用Mex调用OpenCV库函数

唉,用CPP+OpenCV2.2写代码,想调到Matlab下方便调参数和进一步分析。于是,就有了下面的工作。

mex基础就不多说了。首先,自己用mex标准写一个A.cpp函数。然后把乱七八糟的*.h, *.cpp都放到同一个目录下。

Matlab中输入mex -v可以看到一个FILE=xxx/mexopts.sh的文件,直接右击该地址,打开即可修改mex的Makefile文件。

我的机器是32位Linux,于是找到glnx86,里面加上
CXXFLAGS=”$CXXFLAGS -I /usr/local/include/opencv”
CXXFLAGS -L /usr/loca/lib”
CXXLIBS=”$CXXLIBS -lopencv_core -lopencv_imgproc -lopencv_calib3d -lopencv_video -lopencv_features2d -lopencv_ml -lopencv_highgui -lopencv_objdetect -lopencv_contrib -lopencv_legacy”

接下来,mex A.cpp *.cpp即可编译成功!

只是,运行A时发现两个错误:

  1. `GLIBCXX_3.4.11′ not found opencv
    这是因为Matlab目录下自带libstdc++.so的问题,将其软链接到/usr/lib/libstdc++.so.6.0.13即可。
  2. Undefined symbol: _ZN8QMapData10createDataEi.
    这是由于在编译安装OpenCV2.2时选择了With_QT,重新编译安装OpenCV,将With_QT关掉,即可解决。

于是,就可以欢快地在Matlab里面使用mex调用OpenCV2.2了。

 

 

Advertisements
Categories: Vision
  1. No comments yet.
  1. No trackbacks yet.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: