【发布时间】:2020-07-30 13:28:19
【问题描述】:
我想将大小为 500x500x3 的 RGB 图像填充到 512x512x3。我知道我需要在每个边框上添加 6 个像素,但我不知道怎么做。我已阅读 numpy.pad 函数文档,但不明白如何使用它。代码 sn-ps 将不胜感激。
【问题讨论】:
标签: numpy opencv python-imaging-library opencv-python
我想将大小为 500x500x3 的 RGB 图像填充到 512x512x3。我知道我需要在每个边框上添加 6 个像素,但我不知道怎么做。我已阅读 numpy.pad 函数文档,但不明白如何使用它。代码 sn-ps 将不胜感激。
【问题讨论】:
标签: numpy opencv python-imaging-library opencv-python
如果需要补0:
RGB = np.pad(RGB, pad_width=[(6, 6),(6, 6),(0, 0)], mode='constant')
使用constant_values 参数填充不同的值(默认为0):
RGB = np.pad(RGB, pad_width=[(6, 6),(6, 6),(0, 0)], mode='constant', constant_values=0, constant_values=[(3,3),(5,5),(0,0)]))
【讨论】:
我们可以尝试通过添加边框填充来获得解决方案,但它会变得有点复杂。我想建议你可以替代方法。首先我们可以创建一个大小为512x512 的画布,然后我们将您的原始图像放置在这个画布中。您可以从以下代码中获得帮助:
import numpy as np
# Create a larger black colored canvas
canvas = np.zeros(512, 512, 3)
canvas[6:506, 6:506] = your_500_500_img
显然,您可以将 6 和 506 转换为更通用的变量,并将其用作 padding、512-padding 等,但这段代码说明了这个概念。
【讨论】: