
上面的图像是检测迷宫的一个例子,在这个例子中,我发现了一个问题--使用GaussianBlur、同时使用阈值和只使用线程保持有很大的不同。例如,
cvtColor(img,img,CV_RGB2GRAY);
threshold(img,img,10,255,CV_THRESH_BINARY); 它的工作原理是原始图像。但如果在阈值前应用高斯模糊,阈值参数设置为10,则整个图像为白色。
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才会有很大的不同,你能帮我解释一下吗?
发布于 2013-09-03 12:03:00
我将首先从一些常见的提示开始,因为它们会立即解决您的问题。
话虽如此,但正在发生的是完全预期的行为。模糊(如高斯滤波器)图像减少了像素在某些部分的值,而在其他部分则增加了像素值。因为您使用的是二进制阈值,这些值将变成黑色或白色。
请参阅下面的链接,它们准确地解释了您正在使用的每个函数,以及如何使用它们:
https://stackoverflow.com/questions/18590831
复制相似问题