【发布时间】:2017-01-24 04:11:41
【问题描述】:
我有一个大小为 1044*1408 的图像 F,它只有 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(*)。
【问题讨论】:
-
你想要的可能是重新采样图像而不是调整它的大小。既然你提到了
ndarray,我假设你使用的是numpy。查看stackoverflow.com/questions/25876640/…中的解决方案(“numpy slicing”)它将允许重采样(子采样)而无需插值。 -
CV_INTER_NN“插值”方法不应该选择原始像素值之一(与调整大小的像素位置距离最小的那个)?
-
Yes set
interpolation=cv2.INTER_NEAREST将让您使用最接近的像素值。我可以使用Z= cv2.resize(F,(480,380),interpolation=cv2.INTER_NEAREST),只得到 0,2 和 3。我想知道是否有任何方法根本不进行插值