我正在尝试仅将形态关闭操作应用于 nxn
(i,j) 处像素的邻域。最简单的方法似乎是创建 CvRect
与 cvRect(j-n,i-n,j+n,i+n)
,将图像的 ROI 设置为该值,然后应用形态学。
但是,结果与将 Morphology 应用于整个图像相同,而无需设置 ROI。我在这里做错了什么?
最佳答案
我没有尝试使用 C 接口(interface)执行此操作,但这是我使用 C++ 接口(interface)执行此操作的方式:
#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;
}
https://stackoverflow.com/questions/8612003/