2016-09-16 20 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)