【问题标题】:Does SetROI work when applying Morphology in OpenCV?在 OpenCV 中应用形态学时,SetROI 是否有效?
【发布时间】:2012-11-19 20:28:34
【问题描述】:

我正在尝试对 (i,j) 处像素的nxn 邻域应用形态闭合操作。最简单的方法似乎是用cvRect(j-n,i-n,j+n,i+n) 创建一个CvRect,将图像的ROI 设置为该值,然后应用形态学。

但是,结果与将 Morphology 应用于整个图像相同,而无需设置 ROI。我在这里做错了什么?

【问题讨论】:

    标签: image-processing opencv


    【解决方案1】:

    我没有尝试使用 C 接口执行此操作,但以下是我使用 C++ 接口执行此操作的方法:

    #include <opencv2/core/core.hpp>
    #include <opencv2/highgui/highgui.hpp>
    #include <opencv2/imgproc/imgproc.hpp>
    
    #include <vector>
    #include <iostream>
    
    using namespace std;
    using namespace cv;
    
    int main(int argc, char* argv[])
    {
        Mat spots = imread("roi.png", 0);
    
        Rect ulRoi(0, 0, spots.cols >> 1, spots.rows >> 1);
        Mat opening(spots, ulRoi);
    
        Mat element = getStructuringElement(MORPH_RECT, Size(7, 7));
        morphologyEx(opening, opening, MORPH_OPEN, element);
    
        imshow("opening", opening);
        imshow("spots", spots);
        waitKey();
    
        return 0;
    }
    

    我基本上只是设计了一个图像,然后才摆脱了左上象限的“噪音”光环。我的“噪音”点只有 5x5,所以我将形态内核设为 7x7 以消除噪音。

    这是输入图片:

    经过形态学打开,我得到以下信息:

    希望对你有所帮助!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-12-11
      • 2020-01-30
      • 2020-07-22
      • 2017-12-17
      • 1970-01-01
      • 1970-01-01
      • 2020-01-04
      相关资源
      最近更新 更多