如何对RGB图像进行零填充?

时间:2020-04-17 05:52:54

标签: numpy opencv python-imaging-library opencv-python

我想将大小为500x500x3的RGB图像填充到512x512x3。我知道我需要在每个边框上添加6个像素,但我不知道如何做。我已经阅读了numpy.pad函数文档,但不知道如何使用它。代码片段将不胜感激。

2 个答案:

答案 0 :(得分:2)

我们可以尝试通过添加边框填充来获得解决方案,但这样做会有些复杂。我建议您可以选择其他方法。首先,我们可以创建大小为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转换为更通用的变量,并将其用作padding512-padding等,但是此代码说明了这一概念。

答案 1 :(得分:2)

如果需要填充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)]))