在opencv中实现imclose(IM,SE)

Wan*_*ong 2 matlab opencv image-processing mathematical-morphology

我想检测下面图像的背景,其前景总是很多黑点:

img.png

在此输入图像描述

有人使用磁盘形结构元素对图像执行形态学闭合,并获得良好的结果:

在此输入图像描述

Matlab代码:

img = imread('c:\img.png');
bg = imclose(img, strel('disk', 15));
figure('name', 'bg'), imshow(bg);
Run Code Online (Sandbox Code Playgroud)

那么如何在opencv中实现imclose(IM,SE)来替换MATLAB中的工作,还是有另一种更好的方法来使用opencv方法检测这样的背景?

Aur*_*ius 5

您可以使用cv::getStructuringElement()创建椭圆结构元素,并cv::morphologyEx()执行关闭操作.

cv::morphologyEx(img, img, cv::MORPH_CLOSE, cv::getStructuringElement(cv::MORPH_ELLIPSE, cv::Size(21,21)));
Run Code Online (Sandbox Code Playgroud)

我必须稍微修改结构元素大小以产生与MATLAB示例类似的结果:

封闭的图像

由于您似乎对使用OpenCV进行形态学操作感兴趣,我建议您对文档进行通读,以了解它的所有功能.