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 
www.mathworks/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:
printf输出格式matlab[1] Lcc-win32 C 2.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:
输入2,出现如下提示:
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:
          www.mathworks/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
set LIB=%VCINSTALLDIR%\LIB;%VCINSTALLDIR%\ATLMFC\LIB;%LINKERDIR%\lib;%MATLAB%\extern\lib\win32;%LIB%;D:\opencv\build\x86\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 shell
32.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"