在Python中填充图像

在Python中填充图像,python,image,numpy,image-processing,Python,Image,Numpy,Image Processing,我试图在所有边上添加列和行 padded_array = np.zeros([img.shape[0] + (size//2) + (size//2), img.shape[1] + (size//2) + (size//2)]) padded_array[size//2 : padded_array.shape[0]-(size//2), size//2 : padded_array.shape[1]-(size//2)] = gray 这里,img是原始图像,gray是灰度图像,shape

我试图在所有边上添加列和行

padded_array = np.zeros([img.shape[0] + (size//2) + (size//2), img.shape[1] + (size//2) + (size//2)])
padded_array[size//2 : padded_array.shape[0]-(size//2), size//2 : padded_array.shape[1]-(size//2)] = gray
这里,
img
是原始图像,
gray
是灰度图像,
shape
两者都是
相同的
。 现在,我正试图创建一个
填充_数组
,方法是在顶部、底部和底部添加
(size//2)行
(大小//2)列
左侧和右侧

大小
总是
奇数

当我尝试填充时,我不明白为什么灰色图像没有广播到填充阵列中。 相反,它所做的是在该灰度图像范围内的所有像素上广播值
255
,填充的行和列留空

我正在添加两张图片的截图,请看一看

  • 灰度图像为:
  • 播放后的填充图像为灰色:

  • 您可以将
    图像宽度/图像高度
    除以并乘以常数

    import matplotlib.pyplot as plt
    
    
    def pad(image, h=2):
        w = (image.shape[0]/image.shape[1]) * h
        plt.figure(figsize=(w, h))
        plt.imshow(im)
        plt.axis('off')
        plt.show()
    
    
    im = plt.imread('blur.png')
    pad(im)
    
    输出:


    这里的错误是,在定义填充数组时,我没有将数组的数据类型定义为int,默认情况下它是浮动的,这就是产生白色图像的原因,一旦我定义填充数组中的数据为int,一切都变好了。

    谢谢,但是我不想使用OpenCV。但是你将问题标记为
    OpenCV
    。请查看我的新答案。是的,非常感谢,但是你能找到并告诉我我的代码哪里出错了吗?我不理解你的代码。因此,我提出我的建议。