解决RGB模式下图片的padding(补边框)问题(含代码实现)

首先,说到图片的padding问题,我们知道对于灰度图(channel=1)的图片我们可以之间将其转化为numpy.array,然后利用np.pad(image,((up,down),(left,right)),'constant', constant_values=(255,255))对图像填充边框,而对于RGB模式(channel=3)下的图片,则无法采用该方法进行填充。但有了之前的基础,我们可以采用相同的原理进行填充。即将RGB模式的图片转化为一个三维的数组,然后利用分片技术,分别提取出每一维的数组进行填充。最后再利用numpy.array的深度矩阵拼接函数将三个二维的数组合成一个三维的数组。然后再将其转换为RGB格式的图片。

    其代码实现如下所示:

    首先先贴上原图:

    解决RGB模式下图片的padding(补边框)问题(含代码实现)_第1张图片

    代码部分:

   


import numpy as np

from PIL import Image

import matplotlib.pyplot as plt


image = Image.open("Dr.Strange.jpg")


image = np.array(image)


#打印原来的图片

plt.imshow(image,cmap = plt.gray())

plt.show()


channel_one = image[:,:,0]

channel_two = image[:,:,1]

channel_three = image[:,:,2]


channel_one = np.pad(channel_one, ((10, 10),(10, 10) ), 'constant', constant_values=(0,0))

channel_two = np.pad(channel_two, ((10, 10),(10, 10) ), 'constant', constant_values=(0,0))

channel_three = np.pad(channel_three, ((10, 10),(10, 10) ), 'constant', constant_values=(0,0))

image = np.dstack((channel_one,channel_two,channel_three))


#打印处理完的图片

plt.imshow(image,cmap = plt.gray())

plt.show()


image = Image.fromarray(image)

image.save("Dr.Strange.jpg")

 

    最终的效果图:

解决RGB模式下图片的padding(补边框)问题(含代码实现)_第2张图片

你可能感兴趣的:(#,OpenCV-Python)