0

我必须将这段代码从 Matlab 翻译成 C:

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

第一次和第二次创建 2 个数组,但我不知道如何从 rpad Mat 对象中删除它它可能类似于(减去每个元素)

    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);
4

2 回答 2

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]
         }
       }
于 2013-05-29T20:07:27.453 回答
0

尝试

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

并且根据您是否想要连续内存,您可以选择直接使用结果(不连续,通常对于大多数 OpenCV 函数都可以)或将其复制回 rpad(连续)

于 2013-05-29T17:12:36.077 回答