用OpenCV搜索整个图像中的nxn像素

用OpenCV搜索整个图像中的nxn像素,opencv,Opencv,如标题中所述,我正试图找到迭代灰度图像并创建nxn内核扫描像素值的最佳方法。主要目标是创建最小/最大过滤器,并将其扩展到自定义中值过滤器 我已经为3x3创建了一个硬编码的解决方案,但是有很多代码,将其扩展到5x5将是一个痛苦的过程 我想知道OpenCV是否有任何功能可以管理这样的任务 可以与矩形遮罩一起使用吗 编辑:我基本上想要的是以下内容 将矩形从图像复制到子图像 确定/分析子图像中像素的最小值或最大值 编辑(测试): for(int y=1;y P>定义C++中的矩形区域是非常容易的。 cv

如标题中所述,我正试图找到迭代灰度图像并创建
nxn
内核扫描像素值的最佳方法。主要目标是创建最小/最大过滤器,并将其扩展到自定义中值过滤器

我已经为3x3创建了一个硬编码的解决方案,但是有很多代码,将其扩展到5x5将是一个痛苦的过程

我想知道OpenCV是否有任何功能可以管理这样的任务

可以与矩形遮罩一起使用吗

编辑:我基本上想要的是以下内容

  • 将矩形从
    图像
    复制到
    子图像
  • 确定/分析
    子图像中像素的最小值或最大值
  • 编辑(测试):

    for(int y=1;y0){
    图像在(x,y)=uchar(最大值);
    }
    }
    }
    }
    
    <代码> > P>定义C++中的矩形区域是非常容易的。
    cv::Mat subImage = image(cv::Rect(upper_left_x,upper_left_y,ROI_width,ROI_height));
    
    应允许您根据需要处理
    子图像

    如果您需要的是中值滤波器,OpenCV也具有该功能:

    cv::medianBlur(image, outputImage, n);
    

    对于nxn过滤器。关于这个函数的更多文档可以在我上面第一条评论的链接中找到。

    你要找的函数是什么?@Hammer,你指的是哪个函数?我指的是腐蚀和扩张,它们将内核中的所有值设置为该内核中的最大值或最小值。Smooth还有一个中间值选项,我认为它符合您的要求。我将查看文档,特别是BaseFilter和FilterEngine类。看起来您可以创建一个自定义子类来完成您需要的任务。@Aurelius,我意识到我的问题可能比我想象的要简单。感兴趣区域(ROI)与我需要的类似,但此函数来自较旧的API。我可以从我的图像中剪下一块(矩形天使)作进一步分析吗?你能回顾一下我问题中的代码吗?这是我尝试使用ROI的结果,但并没有达到我想要的结果。我发现了错误。我颠倒了x和y。虽然我在边境有问题。你能澄清一下你在“边境”有什么问题吗?
    cv::medianBlur(image, outputImage, n);