如何使用opencv扩展蒙版的边缘?

时间:2015-10-23 23:27:33

标签: opencv

我有二进制掩码cv::Mat。我想扩大遮罩的边缘,以确保我排除对靠近遮罩边缘的区域的分析。

我的问题是,如何使用opencv对二进制掩码的边缘进行渗透?

1 个答案:

答案 0 :(得分:3)

通过“流血”,我假设你的意思是dilate形态转换(wiki)。该操作基本上将核矩阵应用于输入矩阵的每个像素。如果内核是一个完全填充的3x3矩阵,它将粗略地将边缘扩大一个像素。

C++: void dilate(InputArray src, OutputArray dst, InputArray kernel, Point anchor=Point(-1,-1), int iterations=1, int borderType=BORDER_CONSTANT, const Scalar& borderValue=morphologyDefaultBorderValue() )

所以你的解决方案可能会出现类似这样的事情:

Mat input = ... 
Mat kernel = cv::getStructuringElement(cv::MORPH_RECT, 3);
Mat output;
cv::dilate(input, output, kernel);

如果这个例子还没有取悦你,可以在samples中找到更好的例子。