2013-05-29 78 views
0

我不得不從MATLAB轉化到C該代碼:脫下墊與OpenCV的

% take off the pads 
    x = (1 + padSize) : (rows - pad8Size); 
    y = (1 + padSize) : (cols - padSize); 
    rpad=rpad(x,y); 

第一和第二創建2陣列,但是我不知道我怎麼也得從RPAD墊目標它可以將其刪除是這樣的(減去每一個元素)

for(int i=1+pad;i<=rows-pad;i++){ 
    for(int j=1+pad;i<=cols-pad;j++){ 
      subtract(rpad,x,rpad); 
      subtract(rpad,y,rpad);}} 

或者類似的東西(刪除外部元件)

 int a=(rows-pad)-(1+pad); 
     int b=(cols-pad)-(1+pad); 
     rpad.create(img.rows - a,img.cols - b,original.type()); 
     img.copyTo(rpad); 

回答

0

嘗試

cv::Rect roi(padSize, padSize, rpad.cols-2*padSize, rpad.rows-2*padSize); 
cv::Mat result = rpad(roi); 

取決於你是否要連續的內存,你可以選擇直接使用的結果(不連續的,通常好於大多數OpenCV函數),或者將其複製到回RPAD(連續)

+0

我想這是好的: – Elvio

+0

對不起,錯誤評論...是不是之前的行和之後? – Elvio

+0

呃,對不起,我沒有完全明白你的問題,「排之前和之後」是什麼意思? – cxyzs7

0

是否有可能將Mat對象與二維數組相乘? Imfft顯然是Mat對象

 for (int i = 0; i &lt; rows; i++){ 
     for (int j = 0; j &lt; cols; j++){ 
       imfft=imfft*filter[i][j] 
     } 
     } 
+0

你試圖做卷積?我建議你創建一個新的問題,因爲這個問題與前一個完全不同。 – cxyzs7

+0

我很抱歉,但我不知道在數學英語中卷積什麼。我在做什麼是實現這個matlab操作:imfft = imfft。* filter;但在我的函數過濾器是一個二維數組 – Elvio