Matlab与C/C++混合编程调用OpenCV
***************************************************
更多精彩,歡迎進入:http://shop115376623.taobao.com
http://item.taobao.com/item.htm?spm=a1z10.5-c.w4002-9510581626.24.ZO6sko&id=43401674106
精通MATLAB混合編程視頻講解
MATLAB各類函數視頻講解
基于MATLAB的高等數學問題求解?
MATLAB函數速查視頻講解
面向對象C++視頻教程
精通MATLAB混編編程demo及PDF?
QQ:2911984429
http://item.taobao.com/item.htm?spm=a1z10.5-c.w4002-9510581626.24.ZO6sko&id=43401674106
***************************************************
原文來自:http://blog.csdn.net/raodotcong/article/details/8785358 ?【其自創很多】
好久沒寫博客了,今天一個師兄問到了一個關于在Matlab與C/C++混合編程時,使用OpenCV庫的編譯問題,所以借此機會總結成文字分享一下過程。
? ? ? 在使用Matlab編譯包含OpenCV庫的代碼之前,首先假設下面的幾項工作已經完成。
? ? ?第一步: 1)下載并解壓某個版本的OpenCV至硬盤的某個目錄上,并將其運行時庫添加到環境變量中。
? 第二步: ? ?2)安裝了某個版本的VC編譯器,并使用Matlab的mex -setup命令,選擇該版本的編譯器作為默認編譯器。
? ? 第三步: ?3)編寫好包含OpenCV庫的Matlab與C/C++混合編程代碼。
[cpp]?view plaincopy
? ? ? 在做好以上的準備工作之后,就可以開始進行代碼的編譯了。編譯代碼時仍然是在Matlab命令行下使用mex命令進行編譯,不過不同的是需要在編譯時指明OpenCV的頭文件、靜態庫文件所在的目錄,以及需要鏈接的OpenCV庫的名稱。這個部分與在Linux下面使用gcc或者g++進行代碼編譯是類似的,下面以目前最新的OpenCV 2.4.4庫為例子,展示一下如何編寫編譯選項的參數,假設上面的代碼存放在名為OpenCVShowImage.cpp的源文件中。在Matlab的Command Line窗口中,我們可以輸入以下參數來進行上面代碼的編譯。
[plain]?view plaincopy
? ? ? 其中:
-IF:\3rdlibs\OpenCV\include,告訴編譯器可以在F:\3rdlibs\OpenCV\include這個目錄進行頭文件的查找;
-LF:\3rdlibs\OpenCV\lib,告訴鏈接器可以在F:\3rdlibs\OpenCV\lib這個目錄進行庫文件的查找;
最后三個參數表面我們寫的源代碼需要鏈接opencv_core244、opencv_imgproc244和opencv_highgui244這三個OpenCV的靜態庫。
? ? ? 在執行完畢上面的命令之后,當前目錄下面就會生成一個OpenCVShowImage.mexw64(或32)的文件,具體的文件名由操作系統是64位還是32位來決定。需要注意的是,如果當前的操作系統是64位的,則在環境變量F:\3rdlibs\OpenCV\bin中以及庫文件目錄F:\3rdlibs\OpenCV\lib中,必須放置的也是64位版本的OpenCV動態庫和靜態庫。最后便可以使用OpenCVShowImage這個函數了,下面是運行這個函數的結果。
? ? ? 如此一來整個編譯過程便結束了,下面也順便列一下mex相關編譯選項的含義。
? ? ? -Ipathname
? ? ??Add pathname to the list of folders tosearch for #include files.
? ? ??Do not add a space after this switch.
? ? ??-lname
? ? ??Link with object library. On Windows systems, name expands to name.lib or libname.lib and on UNIX systems, tolibname.so or libname.dylib.
? ? ??Do not add a space after this switch.
? ? ??-Lfolder
? ? ??Add folder to the list of folders to searchfor libraries specified with the -l option. On UNIX systems, you must also setthe run-time library path, as explained in Setting Run-Time Library Path.
? ? ? 最后也順便提及一下,在日本有個學生也自己封裝一個Matlab版本的OpenCV庫,相關的資料可以在http://www.cs.stonybrook.edu/~kyamagu/mexopencv/這個地方看到。
總結
以上是生活随笔為你收集整理的Matlab与C/C++混合编程调用OpenCV的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 酷派+k1+rom+android+4.
- 下一篇: 如何实现EDIUS中的素材的替换