mex如何调用外部库(以OpenCV为例)

          前一段时间转过一篇调用opencv库的文章 matlab调用opencv的函数,但是没有程序示例,这次用一个简单的图像拷贝来演示一次过程。

    

          这里以OpenCV的cvtColor函数为例。程序编写完成后,在matlab下使用mex命令生成相应的mex文件:

mex -g genCopyImage.cpp -I'D:\Program Files\OpenCV2.4.6\opencv\build\include' -I'D:\Program Files\OpenCV2.4.6\opencv\build\include\opencv' -I'D:\Program Files\OpenCV2.4.6\opencv\build\include\opencv2' -L'D:\Program Files\OpenCV2.4.6\opencv\build\x86\vc9\lib' -lopencv_core246d -lopencv_highgui246d -lopencv_imgproc246d

         注:

         1、genCopyImage.cpp为生成MEX文件的主文件;

         2、-I后的字符串为opencv头文件路径;

         3、-L后的字符串为opencvLib路径,-lopencv_ml246d-lopencv_core246d,为程序运行所需的lib。

         4、加入'-g'参数,可以生成可调试的mex文件,去掉它即生成不可调试的mex文件。


        在matlab下编写程序mexTest.m 进行测试,最终得到输出结果。


        如果运行过程中,Matlab出现:“... 找不到可用的指定模块”,是因为系统找不到对lib 相对应的动态链接库(windows下为dll文件),这时需要把动态链接库的路径加入到电脑 系统的环境变量中(加入后需注销或重启),或者放在执行文件的同级目录下。

   

   

你可能感兴趣的:(opencv,mex)