我正在使用OpenCV在C ++中编写应用程序,以将高斯滤镜应用于图像中的各个像素。例如,我遍历图像中的每个像素,如果它们匹配特定的RGB值,我想将高斯算法仅应用于那些像素,以便仅在图像的那些部分周围出现模糊。
但是,我很难找到办法做到这一点。 OpenCV库提供的GaussianBlur()
功能只允许我模糊整个图像,而不是简单地将算法和内核一次应用于一个像素。有没有人对如何实现这一点有任何想法(例如,是否有另一种我不知道的方法)?我希望我不必自己编写整个算法来将其应用于单个像素。
答案 0 :(得分:4)
我的一位朋友提出了一个很好的解决方案:
GaussianBlur()
应用于克隆无法相信这有多么简单。
答案 1 :(得分:1)
如果您只需要在几个像素上应用它,您可以自己编码高斯模糊。这比你想象的容易得多,只需几行。它是一个简单的stencil operator,其内核使用gaussian function。您所需要的只是像素及其邻居的坐标。
其余的是直截了当的。以下是高斯矩阵的示例,您可以轻松编码或使用高斯函数生成:
简而言之,它只是相邻值的加权平均值。