opencv - 使用 OpenCV 在整个图像中搜索 nxn 像素

标签 opencv

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

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

我想知道 OpenCV 是否有任何可以管理此类任务的功能?

可以minMaxLoc以某种方式与矩形蒙版一起使用?

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

  • image 复制一个矩形至subImage .
  • 确定/分析 subImage 中像素的最小值或最大值.

  • 编辑(测试):
        for(int y = 1; y < image.rows - 1; y++) {
            for(int x = 1; x < image.cols - 1; x++) {
                if(int(image.at<uchar>(x,y)) == 0) {
                    double maxValue = 0;
                    Rect roi(y-1,x-1,3,3);
                    Mat image_roi = image(roi);
                    minMaxLoc(image_roi, NULL, &maxValue, NULL, NULL);
                    if (maxValue > 0) {
                        image_new.at<uchar>(x,y) = uchar(maxValue);
                    }
                }
            }
        }
    

    最佳答案

    在 C++ API 中定义一个感兴趣的矩形区域非常容易。

    cv::Mat subImage = image(cv::Rect(upper_left_x,upper_left_y,ROI_width,ROI_height));
    

    应该允许您处理 subImage但是你需要。

    如果您需要的是中值滤波器,OpenCV 也具有该功能:
    cv::medianBlur(image, outputImage, n);
    

    对于 nxn 过滤器。可以在上面我的第一条评论中的链接中找到有关此功能的更多文档。

    关于opencv - 使用 OpenCV 在整个图像中搜索 nxn 像素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13056857/

    相关文章:

    opencv - 我们可以在 opencv 中创建 n channel 图像吗,n 将在 20 左右

    python - 如何在 python 中将 OpenCV 图像传递给 Tesseract?

    opencv - cvMulTransposed和输出矩阵的尺寸?

    opencv - 查找将3D局部坐标映射到全局坐标的转换矩阵

    android - 为什么 opencv 的默认颜色空间在 android 中不同?

    c++ - 断言失败(size.width>0 && size.height>0)

    android - 将OpenCV 3.2.0与android studio集成时出错

    opencv - 在 OpenCV 中有效判断一幅图像是否完全由另一幅图像的像素值组成

    c++ - OpenCV提取的描述符导致valgrind复制时报invalid read

    c++ - 在 OpenCV 中更新 Mat 的子矩阵