环境:

VS2010 活动解决方案平台x64

WIN 8.1

Opencv 2.4.3

Matlab 2012a

1、  首先保证vs2010能正确调用opencv函数,

2、  Matlab中选择编译器,操作如下:

打开matlab2012,输入mex –setup,出现如下提示:

Welcome to mex -setup.  This utility will help you set up

a default compiler.  For a list of supported compilers, see

http://www.mathworks.com/support/compilers/R2012a/win32.html

Please choose your compiler for building MEX-files:

Would you like mex to locate installed compilers [y]/n?

输入y,出现如下提示:

Select a compiler:

[1] Lcc-win32 C2.4.1 in C:\PROGRA~1\MATLAB\R2012a\sys\lcc

[2] Microsoft Visual C++ 2010 in C:\Program Files\Microsoft Visual Studio 2010

[0] None

Compiler:

输入,出现如下提示:

Please verify your choices:

Compiler: Microsoft Visual C++ 2010

Location: C:\Program Files\Microsoft Visual Studio 2010

Are these correct [y]/n?

输入y

出现如下提示,表明成功:

***************************************************************************

Warning: MEX-files generated using Microsoft Visual C++ 2010 require

that Microsoft Visual Studio 2010 run-time libraries be

available on the computer they are run on.

If you plan to redistribute your MEX-files to other MATLAB

users, be sure that they have the run-time libraries.

***************************************************************************

Trying to update options file: C:\Documents and Settings\zhangjing\Application Data\MathWorks\MATLAB\R2012a\mexopts.bat

From template:              C:\PROGRA~1\MATLAB\R2012a\bin\win32\mexopts\msvc100opts.bat

Done . . .

**************************************************************************

Warning: The MATLAB C and Fortran API has changed to support MATLAB

variables with more than 2^32-1 elements.  In the near future

you will be required to update your code to utilize the new

API. You can find more information about this at:

http://www.mathworks.com/help/techdoc/matlab_external/bsflnue-1.html

Building with the -largeArrayDims option enables the new API.

**************************************************************************

3、  配置一些目录

在matlab中,输入mex –v

下面会有显示:

-> Default options filename found in C:\Documents and Settings\zhangjing\Application Data\MathWorks\MATLAB\R2012a

----------------------------

->    Options file           = C:\Documents and Settings\zhangjing\Application Data\MathWorks\MATLAB\R2012a\mexopts.bat

MATLAB                 = C:\PROGRA~1\MATLAB\R2012A

->    COMPILER               = cl

->    Compiler flags:

COMPFLAGS           = /c /GR /W3 /EHs /D_CRT_SECURE_NO_DEPRECATE /D_SCL_SECURE_NO_DEPRECATE /D_SECURE_SCL=0 /DMATLAB_MEX_FILE /nologo /MD

OPTIMFLAGS          = /O2 /Oy- /DNDEBUG

DEBUGFLAGS          = /Z7

arguments           =

Name switch         = /Fo

。。。。。。。。。(此处省略一些)

选中上面Options file=后面的部分,右键->Open Selection,打开mexopts.bat

找到下面部分,增加红色的部分

set MATLAB=%MATLAB%

set VSINSTALLDIR=C:\Program Files\Microsoft Visual Studio 2010

set VCINSTALLDIR=%VSINSTALLDIR%\VC

rem In this case, LINKERDIR is being used to specify the location of the SDK

set LINKERDIR=C:\Program Files\Microsoft SDKs\Windows\v7.0A\

set PATH=%VCINSTALLDIR%\bin;%VCINSTALLDIR%\VCPackages;%VSINSTALLDIR%\Common7\IDE;%VSINSTALLDIR%\Common7\Tools;%LINKERDIR%\bin;%MATLAB_BIN%;%PATH%

set INCLUDE=%VCINSTALLDIR%\INCLUDE;%VCINSTALLDIR%\ATLMFC\INCLUDE;%LINKERDIR%\include;%INCLUDE%;D:\opencv\include;D:\opencv\include\opencv;D:\opencv\include\opencv2

PS:本人导入的包含如下

;D:\Program Files\opencv\modules\world\include;D:\Program Files\opencv\modules\core\include;D:\Program Files\opencv\modules\videostab\include;D:\Program Files\opencv\modules\video\include;D:\Program Files\opencv\modules\ts\include;D:\Program Files\opencv\modules\stitching\include;D:\Program Files\opencv\modules\photo\include;D:\Program Files\opencv\modules\ocl\include;D:\Program Files\opencv\modules\objdetect\include;D:\Program;Files\opencv\modules\nonfree\include;D:\Program Files\opencv\include\opencv2;D:\Program Files\opencv\include\opencv;D:\Program Files\opencv\modules\ml\include;D:\Program Files\opencv\modules\legacy\include;D:\Program Files\opencv\modules\imgproc\include;D:\Program Files\opencv\modules\highgui\include;D:\Program Files\opencv\modules\gpu\include;D:\Program Files\opencv\modules\flann\include;D:\Program Files\opencv\modules\features2d\include;D:\Program Files\opencv\include;D:\Program Files\opencv\modules\contrib\include;D:\Program Files\opencv\modules\calib3d\include;D:\Program Files\opencv\modules\androidcamera\include

set LIB=%VCINSTALLDIR%\LIB;%VCINSTALLDIR%\ATLMFC\LIB;%LINKERDIR%\lib;%MATLAB%\extern\lib\win32;%LIB%;D:\opencv\build\x86\vc10\lib

PS:本人导入的包含如下

;D:\Program Files\opencv\build\x64\vc10\lib

set MW_TARGET_ARCH=win32

rem ********************************************************************

rem Compiler parameters

rem ********************************************************************

set COMPILER=cl

set COMPFLAGS=/c /GR /W3 /EHs /D_CRT_SECURE_NO_DEPRECATE /D_SCL_SECURE_NO_DEPRECATE /D_SECURE_SCL=0 /DMATLAB_MEX_FILE /nologo /MD

set OPTIMFLAGS=/O2 /Oy- /DNDEBUG

set DEBUGFLAGS=/Z7

set NAME_OBJECT=/Fo

rem ********************************************************************

rem Linker parameters

rem ********************************************************************

set LIBLOC=%MATLAB%\extern\lib\win32\microsoft

set LINKER=link

set LINKFLAGS=/dll /export:%ENTRYPOINT%

/LIBPATH:"%LIBLOC%" opencv_core231d.lib opencv_highgui231d.lib opencv_video231d.lib opencv_ml231d.lib opencv_legacy231d.lib opencv_imgproc231d.lib opencv_flann231d.lib opencv_features2d231d.lib opencv_calib3d231d.lib opencv_objdetect231d.lib opencv_contrib231d.lib libmx.lib libmex.lib libmat.lib /MACHINE:X86 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /manifest /incremental:NO /implib:"%LIB_NAME%.x" /MAP:"%OUTDIR%%MEX_NAME%%MEX_EXT%.map"

set LINKOPTIMFLAGS=

(注意上面include lib处要加分号,LINKFLAGS处各个lib之前要回空格)

PS:本人导入的lib如下:

opencv_calib3d243d.lib opencv_contrib243d.lib opencv_core243d.lib opencv_features2d243d.lib opencv_flann243d.lib opencv_gpu243d.lib opencv_haartraining_engined.lib opencv_highgui243d.lib opencv_imgproc243d.lib opencv_legacy243d.lib opencv_ml243d.lib opencv_nonfree243d.lib opencv_objdetect243d.lib opencv_photo243d.lib opencv_stitching243d.lib opencv_ts243d.lib opencv_video243d.lib opencv_videostab243d.lib

在matlab当前目录下建立cpp文件(简单方法,txt改后缀为cpp),vs打开敲入代码,代码需要是Matlab的C语言接口风格,函数内部调用OpenCV函数演示功能,简化后的代码:程序命名为useOpenCV.cpp保存。

#include"mex.h"

#include     "cv.h"

#include    "highgui.h"

using namespacecv;

voidmexFunction (int nlhs, mxArray *plhs[], // 输出参数个数,及输出参数数组

int nrhs, const mxArray *prhs[]) // 输入参数个数,及输入参数数组

{

char name[256];

int buflens =mxGetNumberOfElements(prhs[0]);

mxGetString(prhs[0], name, buflens+1);

if(!mxIsChar(prhs[0]))

{

mexErrMsgTxt("First parameter must be string/n");

}

mexPrintf(name);

IplImage * img = cvLoadImage(name, 1);

if(img->imageData == NULL)

{

mexErrMsgTxt("Error in image/n");

}

cvNamedWindow("1",1);

//imshow("1",mat);

cvShowImage("1",img);

cvWaitKey(0);

return;

}

5 在matlab里输入 mexuseOpenCV.cpp编译。

6 在matlab里输入命令调用编译好的文件:useOpenCV(‘lena.bmp’);即可调用。注意,lena.bmp图片放在当前文件下。

matlab调用opencv函数的配置的更多相关文章

  1. [转] matlab调用opencv函数的配置

    原文地址百度账户 aleasa123 方式1 1.  首先保证vs2010能正确调用opencv函数, 2.  Matlab中选择编译器,操作如下: 打开matlab2012,输入mex –setup ...

  2. 【kate总结】matlab调用opencv总结

    正常情况下,编写好matlab调用opencv的代码. 1.输入   MEX XX.CPP(所有的mex都要编译) 2.将生成的.mexw64 放到要调用的文件夹下即可 出错总结: 本人写的matla ...

  3. csharp通过dll调用opencv函数,图片作为参数

    [blog 项目实战派]csharp通过dll调用opencv函数,图片作为参数          ​一直想做着方面的研究,但是因为这个方面的知识过于小众,也是由于自己找资料的能力比较弱,知道今天才找 ...

  4. OpenCV安装与配置

    本文使用OpenCV2.48在win10平台下操作. 一,关于OpenCV OpenCV是开源C++计算机可视化处理库,它集成了很多计算机图形图像处理的功能.还有机器学习,字符识别,人脸识别,物体检测 ...

  5. matlab和C/C++混合编程--调用opencv

    最近的我们已经将整个项目搭起来了,项目比较复杂.由于我们做的是检索系统,所以我们用asp.net(c#)做了网页,但是算法的实现是在matlab下,所以我们不得不用matlab生成动态链接库dll,然 ...

  6. 【原创】Matlab.NET混合编程技巧之直接调用Matlab内置函数

                  本博客所有文章分类的总目录:[总目录]本博客博文总目录-实时更新    Matlab和C#混合编程文章目录 :[目录]Matlab和C#混合编程文章目录 在我的上一篇文章[ ...

  7. 向量和矩阵的范数及MATLAB调用函数

    范数就是长度的一种推广形式,数学语言叫一种度量.比如有一个平面向量,有两个分量来描述:横坐标和纵坐标.向量的二范数就是欧几里得意义下的这个向量的长度.还有一些诸如极大值范数,就是横坐标或者纵坐标的最大 ...

  8. Matlab.NET混合编程技巧之——直接调用Matlab内置函数(附源码)

    原文:[原创]Matlab.NET混合编程技巧之--直接调用Matlab内置函数(附源码) 在我的上一篇文章[原创]Matlab.NET混编技巧之——找出Matlab内置函数中,已经大概的介绍了mat ...

  9. opencv的resize和matlab的imresize函数的计算

    在用c++代码复现matlab代码时,遇到两者resize函数的结果不相同的问题. opencv: resize(image1, reTmp, Size(, ), , , cv::INTER_LINE ...

随机推荐

  1. Css_Backgroud-position(背景图片)定位问题详解

    background-position的说明:    设置或检索对象的背景图像位置.必须先指定 background-image 属性.该属性定位不受对象的补丁属性( padding )设置影响.   ...

  2. jquery中DOM

    节点包裹 wrap() (1)$().wrap(html) 将选择的节点用指定的元素包装 $('p').wrap('<div></div>'); (2)多层包裹 $('p'). ...

  3. 【转】PackageInfo、ResolveInfo 笔记

    1.PackageInfo.ResolveInfo PackageItemInfo:包含了一些信息的基类, 它的直接子类有: ApplicationInfo. ComponentInfo.Instru ...

  4. js setTimeout 与 setInterval 以及 for 循环 刷新UI

    1. setTimeout() 方法用于在指定的毫秒数后调用函数或计算表达式:执行一次: 如果需要执行多次,自身再次调用 setTimeout(): 示例:无穷循环并带停止按钮的 <html&g ...

  5. 能源项目xml文件标签释义--<context:component-scan>

    <context:component-scan base-package="com.xindatai.ibs" use-default-filters="false ...

  6. Android 开源简单控件

    Android开源系列分类 查看 CircleImageView 自定义圆形控件的使用 添加依赖 ‘de.hdodenhof:circleimageview:2.1.0' 作用:无论你设置的图片是什么 ...

  7. poj-----(2828)Buy Tickets(线段树单点更新)

    Buy Tickets Time Limit: 4000MS   Memory Limit: 65536K Total Submissions: 12930   Accepted: 6412 Desc ...

  8. C# string 数组 每个元素 加上单引号,每一个都被包含在单引号内

    在拼接SQL的时候经常会遇到此类问题,尤其是in查询的时候,内容是一段 单引号的 字符的时候 strWhere += " a.EC101_WRYBH  IN (" + string ...

  9. DataTable 转成字符串数组

    private static string[] autoCompleteWordList = null; public string[] GetCompleteDepart(int count,str ...

  10. ZZC语言代码风格

    程序员之路--关于代码风格 优秀的代码风格如同一身得体的打扮,能够给人以良好的印象.初学程序设计,首先必须建立良好的编程习惯,这其中就包括代码风格.本文就代码风格中的几个重点问题进行了讨论,并在文后给 ...