作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我尝试重新缩放 2D 图像(灰度)。图像大小为 256x256,所需输出为 224x224。像素值范围从 0 到 1300。
我尝试了 2 种方法来使用 Lanczos 插值重新缩放它们:
首先使用PIL图像:
import numpy as np
from PIL import Image
import cv2
array = np.random.randint(0, 1300, size=(10, 256, 256))
array[0] = Image.fromarray(array[0]).resize(size=(224, 224), resample=Image.LANCZOS)
导致错误信息:ValueError: image has wrong mode
然后是 CV2:
array[0] = cv2.resize(array[0], dsize=(224, 224), interpolation=cv2.INTER_LANCZOS4)
导致错误消息:ValueError:无法将输入数组从形状 (224,224) 广播到形状 (256,256)
如何正确地做到这一点?
最佳答案
在第二种情况下,您要将 256x256 图像的大小调整为 224x224,然后将其分配回原始数组的一部分。这个切片的大小仍然是 256x256,所以 NumPy 不知道如何进行数据复制。
相反,创建一个大小合适的新输出数组:
array = np.random.randint(0, 1300, size=(10, 256, 256))
newarray = np.zeros((10, 224, 224))
newarray[0] = cv2.resize(array[0], dsize=(224, 224), interpolation=cv2.INTER_LANCZOS4)
关于python - 使用 2D 图像在 Python 中进行 Lanczos 插值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60416856/
我是一名优秀的程序员,十分优秀!