我正在一個Matlab代碼取的視頻幀,並將它們的單元陣列如MEX文件錯誤常量輸入prhs MEX後的變化被稱爲
frames{fr} = read(videoObj, fr);
內對於一個樣本視頻,我檢查它包含84幀(視頻有84幀),並且所有單元格都充滿了圖像。
我有一個MEX文件,作爲標準配置,它是如
void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[])
正如我已閱讀MEX文件創建的屬性,他們說輸入prhs
是const mxArray
從而使MEX代碼中無論發生什麼事情,輸入不會改變。我給matlab的幀單元陣列作爲mex文件的輸入,因爲prhs[0]
是幀單元,我做了一些處理(我發誓我沒有改變我在prhs[0]
中所做的)。然而,當我調試Matlab代碼時,在我調用mex文件(並將mex文件的框架作爲輸入)後,我看到了該框架,我的框架單元格的最後一個單元格似乎已被刪除。當我查看第84個單元格時,它是[]
,有時它是一個隨機數,例如8或4.我不明白當我調用mex文件時,我的框架單元格的最後一列消失的方式或原因。
您可能認爲我可能在我的Matlab代碼中有一個錯誤,但是當我調試時,我在處理mex之前查看了幀,它有84個單元,最後一個單元是預期的圖像,但在我打電話之後mex,幀仍然是84個單元,但最後一個單元是[]
:空。
如果有人能幫助我,我將不勝感激,爲什麼會發生這樣的事情呢? const mxArray
是不是意味着'輸入不會在mex中改變'?