2

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

图片.png

在此处输入图像描述

有人用圆盘形结构元素对图像进行形态闭合,得到了很好的结果:

在此处输入图像描述

Matlab代码:

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

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

4

1 回答 1

5

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

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

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

关闭图像

由于您似乎对 OpenCV 的形态学操作感兴趣,因此我建议您通读文档以了解它的全部功能。

于 2013-08-20T17:11:36.940 回答