【发布时间】:2015-06-29 04:48:23
【问题描述】:
我有这个尺寸为 800 x 600 像素的原始图像
我要做的是将图像大小调整为 625 x 480 像素并过滤所有土地区域。我发现土地部分的 BGR 值为 (95,155,212)。这是我用来过滤所有和区域的代码:
image[np.where((image == [95,155,212]).all(axis = 2))] = [0,0,0]
如果我先调整大小,然后过滤,输出如下:
如果我先过滤然后调整大小,我会得到我想要的输出:
所以我的第一个问题是调整大小时图像的像素发生了什么变化?
我有这个尺寸为 712 x 480 像素的原始图像
当我应用过滤来移除陆地区域时,我得到的输出类似于顶部的第二张图像。第二个问题,有什么办法可以解决这个问题吗?
【问题讨论】:
-
你用什么来调整图像的大小?你在用
cv2.resize吗?如果是,则默认情况下会执行双线性插值,以在调整图像大小时对像素进行插值。但是,我不太明白你的问题是什么。您面临的具体问题是什么? -
是的,我使用了
cv2.resize。我的问题是我无法对最后一张图像中的土地区域进行彻底过滤,并且我得到的输出总是在这些过滤后的土地区域周围有衬里(与顶部的第二张图像相同的问题) -
嗯,有道理。原因是因为衬里/网格的颜色与您尝试归零的颜色不同。所以你的目标是从图像中移除陆地块(橙色区域),以及与这些块相交的那些衬里?
-
是的,我被困在那里了。在我看来,只有更大的图像才能使用我的 1 线过滤器。另外,我的目标是过滤所有土地,并且由于图像中的其他细节与土地颜色相同,我试图最小化要过滤的 BGR 范围,所以我选择了最常见的值,即 @ 987654328@,但会导致留下很多衬里
-
显示您的确切
resize代码也会有所帮助。您可以更新您的帖子以反映这一点吗?我假设您也希望水体得到维护?
标签: python image opencv image-processing filter