首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用OpenCV脱掉衬垫

使用OpenCV脱掉衬垫
EN

Stack Overflow用户
提问于 2013-05-29 19:19:58
回答 2查看 190关注 0票数 0

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

代码语言:javascript
运行
复制
   % take off the pads
   x = (1 + padSize) : (rows - pad8Size);
   y = (1 + padSize) : (cols - padSize);
   rpad=rpad(x,y);

第一个和第二个创建2数组,但我不知道如何从rpad Mat对象中删除它,它可以是这样的(减去每个元素)

代码语言:javascript
运行
复制
    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);}}

或者类似于(删除外部元素)

代码语言:javascript
运行
复制
      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);
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-05-30 01:12:36

试一试

代码语言:javascript
运行
复制
cv::Rect roi(padSize, padSize, rpad.cols-2*padSize, rpad.rows-2*padSize);
cv::Mat result = rpad(roi);

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

票数 0
EN

Stack Overflow用户

发布于 2013-05-30 04:07:27

是否可以将一个Mat对象与一个二维数组相乘?Imfft显然是Mat对象

代码语言:javascript
运行
复制
      for (int i = 0; i &lt; rows; i++){
         for (int j = 0; j &lt; cols; j++){
               imfft=imfft*filter[i][j]
         }
       }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16812516

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档