OpenCV - 如何实现逐渐的图像模糊效果?

时间:2017-01-12 09:40:07

标签: c++ opencv image-processing filtering

我想在C ++中使用OpenCV来实现渐进图像模糊效果,例如图片中的那个:

但我不知道该怎么做。 我在OpenCV中使用了ReadLine函数,但无法实现我想要的逐渐模糊效果。

我该怎么办?

1 个答案:

答案 0 :(得分:2)

您可以使用GaussianBlur()。假设您将 SigmaX SigmaY 参数的值设置为0,则滤波器内核的大小对应于平滑级别 - 较大的内核意味着更平滑的图像。

现在,您应该将图像划分为多组行(包含1行或更多行),将它们视为单独的图像,并将 GaussianBlur()应用于每个图像,并减少每个图像的内核大小连续行或一组行 根据您想要实现的结果,您必须调整参数,例如初始和最终内核大小,大小减小的速度,每个组中的行数以及每组行的大小是否相同(例如如果某个迭代的内核大小 NxN ,您可以将其应用于 N 行组 - 那么组大小将是可变的,而顶层组将包含行数最多)。另外,请记住将图像边界视为特殊情况。

注意:如果您要将 NxN 过滤器应用于由 N 行组成的图像条,则应采用其大小的ROI是(2N-1)xN 以包含边界像素。