1、新建專案,專案命名,選擇 dll,空專案
2、在原始檔新增.def檔案,寫入語句:
3、新增 .cpp檔案,寫mexfunction
4、配置——專案-屬性:
(1) c/c++-常規-附加包含目錄-新增路徑」.\extern\include「——自己找到matlab對應安裝路徑
(2) c/c++-常規-配置管理器-平台-新建-x64——如果生產32位mexw檔案則不用這一步驟
(3)鏈結器-常規-輸出檔案填」.\debug\filename.mexw64「——這是生成要用的mexw檔案的設定
這是另外乙個待改寫的函式center_weight.m:
輸入影象和閾值,為所有畫素計算與大於閾值畫素的距離,進行加權,離大於閾值畫素越近,權重越大,輸出距離矩陣
function [min_c] = center_weight( img_in,yu_value )
img_in=mat2gray(img_in);
[h,w]=size(img_in);
[row,col]=find(img_in>yu_value);% 找到所有大於閾值的點,記錄座標
l=length(row);
a(1,:)=row;
a(2,:)=col;
for i0=1:h %計算影象每個點
for j0=1:w
for i=1:l %與閾值以上所有點
c_store(i)=norm(a(:,i)-[i0;j0]); %的歐式距離
endmin_c(i0,j0)=min(c_store);%min_c最小歐式距離圖
endendend
改寫成的mex
#include "mex.h"
#include //用到了sqrt()
//被呼叫的子函式:返回陣列 a 的最小值
double minum(double * a,int num)
return temp;
} // mex檔案介面函式:計算並輸出「距離」矩陣
void mexfunction(int nlhs, mxarray *plhs, int nrhs, const mxarray *prhs)
} //為要用到的變數分配空間,如果沒有分配空間,matlab會崩潰
int *row=(int *)mxcalloc(num,sizeof(int));
int *col=(int *)mxcalloc(num,sizeof(int));
double *c_store=(double *)mxcalloc(num,sizeof(double));
//找大於閾值的畫素的座標
int k=0;
for (i=0;iyu_value)
} double temp;
for(i=0;imexfunction(int nlhs, mxarray *plhs, int nrhs, const mxarray *prhs) //左個數、左指標;右個數、右指標
mxgetpr()獲取引數指標,
*()獲取指標值,
mxgetdimensions()獲取矩陣維度,
mxcreatedoublematrix()構建矩陣
記錄將FLANN演算法編譯成MEX檔案的過程
在重現文章 vocmatch efficient multiview correspondence for structure from motion 所做的研究工作中,我們遇上了如何將flann演算法的c 轉換成mex檔案的問題。我們使用的軟體是matlab r2015b以及msvc2010。利用...
Python記錄4 檔案操作
檔案 1.什麼是檔案 檔案是作業系統為使用者 應用程式提供一種操作硬碟的虛擬單位 2.為何要用檔案 為了訪問硬碟資料 3.如何用檔案 1.開啟檔案 2.讀寫檔案 3.關閉檔案 作業系統資源 f open r c users dell desktop a.txt mode r encoding utf...
centosifcfg eth0檔案內容為空
虛擬機器安裝好centos 6系統後,發現ip在每次重啟後都會還原,用ifconfig檢視是有eth0網絡卡的 也有可能只有回環網絡卡lo 於是檢視eth0網絡卡配置檔案,發現在 etc sysconfig network scripts 目錄下沒有 ifcfg eth0 這個網絡卡配置檔案。是因為...