前言:前面写过一篇 “Matlab OpenCV混合编程” 提到了三种方法。其他两种方法用起来比较方便,但速度就上不去,至少在我的电脑跑的感觉是这样。这一个星期一直在用mex cpp的方法,可参考了网上很多博客,但按照他们的方法来,并修改相应的路径就是出不来结果。现在记录下遇到的问题和“解决方法”,但也有一些想不明白的地方。
系统及软件配:
windows7:64位
VS2013
matlab2015a 64位
opencv2.4.9
1、路径等相关配置
这里自行搜索怎么添加 opencv 的系统路径,以及在VS配置相关路径,这里提供一个参考的链接1吧
参考连接去配置就好,注意改成自己相应的地址跟版本号,链接中提到,如果找不到opencv_core249d.dll等类似的文件,就重启下电脑,或者按照链接中的第六步去做。
如果要用相对路径的话,可以参考链接2
问题:找不到各种头文件,如“highgui.hpp”
解决思路和方法:
一般加入的都是这三个路径
...\opencv\build\include
...\opencv\build\include\opencv
...\opencv\build\include\opencv2
如果引用头文件 “cv.h”, "highgui.h", "cxcore.h"等都没问题,因为这些 ".h" 的头文件直接就在opencv中,但如果直接#include "highgui.hpp" 则会出现找不到头文件的问题
因为“highgui.hpp” 文件是在opencv2中highgui文件夹下面,这时候应该改成#include "opencv2\highgui\highgui.hpp" 。
其他相应的头文件而根据上面的例子去改吧。
参考文献:
http://blog.csdn.net/poem_qianmo/article/details/19809337
http://blog.csdn.net/ggz631047367/article/details/37914681
2、mex
a)之前在windows编译 tld 的源程序,本来想在tld上面直接改的,发现有问题;
b)另外,有不少教程说修改mexopt.bat文件,但新版本matlab没有这个文件了,虽然也可以通过在matlab的命令窗口执行 “fullfile(prefdir,'mexopts.bat')”命令来找到mexopt.bat的路径,但被另外一个文件替代了。这个路径是被隐藏起来的。
c)后面参考了其他的博客等,都能编译出文件来,但总是出不来结果。后面看到文献[3] ,虽然也出不来结果,但猜测了一下,再修改就没问题了。下面直接给出make文件的写法再来说明自己遇到的坑
% This cppmake.m is for MATLAB
% Function: compile c++ files which rely on OpenCV for Matlab using mex
% Matlab and C++ mixed programming(dependent on opencv library)
% First step(before exeuting this program): use "mex -setup" to choose your c/c++ compiler
clear all;
clc;
% Get the architecture of this computer
is_64bit = strcmp(computer,'MACI64') || strcmp(computer,'GLNXA64') || strcmp(computer,'PCWIN64');
%------------------------------------------------------