缩小/调整图像大小而无需插值

Ech*_*cho 6 python opencv

我的图像F大小为1044 * 1408,它只有3个整数值0、2和3。

我想将其缩小到360 * 480。现在我正在使用Z= cv2.resize(F,(480,380))。但是Z是插值的,它具有许多唯一值,不仅仅是0、2和3。我不能将插值取整到最接近的整数,因为我会得到1。

F从tif文件读取并进行操作,现在是ndarray。所以我不能使用PIL:F = F.resize((new_width, new_height))作为F从不是F = Image.open(*)

Hum*_*awi 10

您可以使用INTER_NEAREST

Z= cv2.resize(F,(480,380),fx=0, fy=0, interpolation = cv2.INTER_NEAREST)
Run Code Online (Sandbox Code Playgroud)


Dan*_*ton 6

或者,您也可以使用skimage.transform.resize。参数order = 0强制执行最近邻居插值。

   Z = skimage.transform.resize(F,
                               (480,380),
                               mode='edge',
                               anti_aliasing=False,
                               anti_aliasing_sigma=None,
                               preserve_range=True,
                               order=0)
Run Code Online (Sandbox Code Playgroud)