首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C++ >> 關於C++

Matlab 中編譯 C++ 代碼並支援 OpenCV

     編輯:關於C++

提供 mex_opencv(src) 函數,在 Matlab 中一鍵編譯連結 OpenCV 的 C++ MEX 檔案。

代碼


function mex_opencv(src)
    ARC = 'x64';
    BIN_PATH = ['D:\libs\opencv\3.4.10\' , ARC , '\vc12.0\bin'];
    INC_OPT = '-ID:\libs\opencv\3.4.10\include\opencv ';
    INC_OPT = [INC_OPT, '-ID:\libs\opencv\3.4.10\include '];
    LIB_PATH = ['D:\libs\opencv\3.4.10\' , ARC , '\vc12.0\lib'];
    LIBS = '';
    LIBS_ORG = dir([LIB_PATH, '\*.lib']);
    for i = 1:numel(LIBS_ORG)
        CUR_LIB = strtrim(LIBS_ORG(i).name);
        if (CUR_LIB(end-4) ~= 'd') % 排除 Debug 库
            LIBS = [LIBS, '-l', CUR_LIB, ' '];
        end
    end
    LIB_OPT = ['-L', LIB_PATH, ' ', LIBS];
    % Boost 支援
    INC_OPT = [INC_OPT, ' ', '-ID:\libs\boost\1.57.0 '];
    LIB_OPT = [LIB_OPT, ' ', '-LD:\libs\boost\1.57.0\stage\lib\vc12.0', ARC, ' '];
    compile_cmd = ['mex -v -O ', INC_OPT, LIB_OPT, ' ', src];
    eval(compile_cmd);
    % 設定運行時 PATH
    PATH_STR = getenv('PATH');
    if (numel(strfind(PATH_STR, 'opencv')) == 0)
        setenv('PATH', [BIN_PATH, ';', PATH_STR]);
    end
end

使用說明

  1. 根據實際安裝路徑修改 BIN_PATH, INC_OPT, LIB_PATH, Boost 路徑。
  2. 在 Matlab 命令列執行 mex_opencv('your_file.cpp')。
  3. 自動排除 Debug 版 *d.lib,連結 Release 库。
  4. 編譯後自動將 OpenCV bin 目錄加入系統 PATH,確保運行時載入 DLL。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved