在opencv中实现imclose(IM,SE)

时间:2013-08-20 16:10:54

标签: matlab opencv image-processing mathematical-morphology

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

img.png

enter image description here

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

enter image description here

Matlab代码:

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

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

1 个答案:

答案 0 :(得分:5)

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

cv::morphologyEx(img, img, cv::MORPH_CLOSE, cv::getStructuringElement(cv::MORPH_ELLIPSE, cv::Size(21,21)));

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

Closed image

由于您似乎对OpenCV的形态学操作感兴趣,我建议您给documentation一个通读,以了解它的功能。