2013-05-29 53 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