2016-09-16 56 views
2

我具有尺寸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(*)

+1

你想可能是重采样图像,而不是调整其大小的是什么。既然你提到'ndarray',我假设你正在使用'numpy'。看看http://stackoverflow.com/questions/25876640/subsampling-every-nth-entry-in-a-numpy-array中的解决方案(“numpy slicing”)它将允许无插值的重采样(子采样)。 –

+0

不应该CV_INTER_NN“内插”方法选择原始像素值之一(与调整大小的像素位置距离最小的那个)? – Micka

+0

是的设置'interpolation = cv2.INTER_NEAREST'可以让你使用最接近的像素值。我可以使用'Z = cv2.resize(F,(480,380),interpolation = cv2.INTER_NEAREST)',只得到0,2和3.我想知道是否有任何方法根本不做插值 – Echo

回答

2

您可以使用INTER_NEAREST

Z= cv2.resize(F,(480,380),fx=0, fy=0, interpolation = cv2.INTER_NEAREST)