0

在此处输入图像描述

上图是一个检测迷宫的例子,在这个例子中我发现了一个问题,即同时使用 GaussianBlur、threshold 和仅使用 threadhold 之间存在很大差异。例如,

cvtColor(img,img,CV_RGB2GRAY);
threshold(img,img,10,255,CV_THRESH_BINARY); 

它作为原始图像工作。但是如果在阈值参数设置为 10 的阈值之前应用 gaussianblur,则整个结果图像是白色的。

cvtColor(img,img,CV_RGB2GRAY);
GaussianBlur(img,img,Size(3,3),0);
threshold(img,img,10,255,CV_THRESH_BINARY);

它只在我将阈值参数增加到 100 之前有效,

GaussianBlur(img,img,Size(3,3),0);
threshold(img,img,100,255,CV_THRESH_BINARY);

为什么仅仅因为 GaussianBlur 就存在巨大差异,你能帮我解释一下吗?

4

1 回答 1

1

我将首先从一些常见的提示开始;因为他们会立即解决您的问题。

  • 显示您的“中间”结果。这有助于了解发生了什么
  • 阅读您正在使用的函数的文档和教程

话虽如此; 正在发生的事情完全是预期的行为。模糊(例如,高斯滤波器)图像会降低某些部分的像素值并增加其他部分的像素值。因为您使用的是二进制阈值,所以这些值将变为黑色或白色。

请参阅下面的链接,它们准确地解释了您正在使用的每个功能的作用以及如何使用它们:

于 2013-09-03T12:03:00.967 回答