我想检测下面图像的背景,其前景总是很多黑点:
img.png
有人使用磁盘形结构元素对图像执行形态学闭合,并获得良好的结果:
Matlab代码:
img = imread('c:\img.png');
bg = imclose(img, strel('disk', 15));
figure('name', 'bg'), imshow(bg);
那么如何在opencv中实现imclose(IM,SE)来替换MATLAB中的工作呢?还是有另一种更好的方法来使用opencv方法检测这样的背景?
答案 0 :(得分:5)
您可以使用cv::getStructuringElement()
创建椭圆结构元素,使用cv::morphologyEx()
执行结束操作。
cv::morphologyEx(img, img, cv::MORPH_CLOSE, cv::getStructuringElement(cv::MORPH_ELLIPSE, cv::Size(21,21)));
我必须稍微修改结构元素大小以产生与MATLAB示例相似的结果:
由于您似乎对OpenCV的形态学操作感兴趣,我建议您给documentation一个通读,以了解它的功能。