Image processing 在OpenCV中应用形态学时,SetROI有效吗?
我试图仅对(I,j)处像素的Image processing 在OpenCV中应用形态学时,SetROI有效吗?,image-processing,opencv,Image Processing,Opencv,我试图仅对(I,j)处像素的nxn邻域应用形态学闭合操作。最简单的方法似乎是使用CvRect(j-n,i-n,j+n,i+n)创建CvRect,将图像的ROI设置为该值,然后应用形态学 但是,结果与对整个图像应用形态学相同,不设置ROI。我在这里做了什么?< p>我没有尝试用C接口做这个,但是下面是我用C++接口做的: #include <opencv2/core/core.hpp> #include <opencv2/highgui/highgui.hpp> #incl
nxn
邻域应用形态学闭合操作。最简单的方法似乎是使用CvRect(j-n,i-n,j+n,i+n)
创建CvRect
,将图像的ROI设置为该值,然后应用形态学
但是,结果与对整个图像应用形态学相同,不设置ROI。我在这里做了什么?< p>我没有尝试用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;
}
#包括
#包括
#包括
#包括
#包括
使用名称空间std;
使用名称空间cv;
int main(int argc,char*argv[])
{
Mat spots=imread(“roi.png”,0);
矩形ulRoi(0,0,spots.cols>>1,spots.rows>>1);
垫子开口(斑点、ulRoi);
Mat元素=getStructuringElement(变形,大小(7,7));
形态学(开放,开放,形态开放,元素);
imshow(“开幕式”,开幕式);
imshow(“spots”,spots);
waitKey();
返回0;
}
我基本上只是设计了一个图像,然后只去除了左上象限的“噪音”光环。我的“噪声”点只有5x5,所以我制作了7x7的形态学内核来消除噪声
以下是输入图像:在一个形态学的开头之后,我得到了以下内容:
希望这能帮到你