我试图使用np.pad
给一个RGB图像填充品红色(255, 0, 255),但是使用RGB值作为constant_values
时会出现错误。例如:
import numpy as np
from scipy.misc import face
import matplotlib.pyplot as plt
def pad_img(img, pad_with):
pad_value = max(img.shape[:-1])
img_padded = np.pad(img,
((0, (pad_value - img.shape[0])), # pad bottom
(0, (pad_value - img.shape[1])), # pad right
(0, 0)), # don't pad channels
mode='constant',
constant_values=pad_with)
fig, (ax1, ax2) = plt.subplots(1, 2)
ax1.imshow(img)
ax2.imshow(img_padded)
plt.show()
这个工作很好(用白色填充):
img = face()
pad_img(img, pad_with=255)
而这个不是 (用品红色填充):
img = face()
pad_img(img, pad_with=(255, 0, 255))
抛出异常:
ValueError: 无法将操作数与重新映射后的形状[原始->重新映射]: (3,) 和请求形状 (3,2) 相匹配
(255, 0, 255)
作为填充的常量值。 - yatu(((255, 0, 255), (255, 0, 255)), ((255, 0, 255), (255, 0, 255)), (0, 0))
运行良好,@Ehsan请编辑答案,我会接受它! - trsvchn