【问题标题】:Padding an image in Python在 Python 中填充图像
【发布时间】:2020-12-07 15:00:58
【问题描述】:

我正在尝试在所有方面添加列和行。

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是灰度图像,shapesame。 现在,我正在尝试通过在顶部和底部添加 (size//2) rows 来创建 padded_array(size//2) columns左右。

size 始终是odd

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

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

  1. 灰度图像为:

  1. 广播灰色后的填充图像是:

【问题讨论】:

    标签: python image numpy image-processing


    【解决方案1】:

    您可以将image width / image height 相除并乘以一个常数。

    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)
    

    输出:

    【讨论】:

    • 谢谢,但我想不使用 OpenCV。
    • 但是您将问题标记为opencv
    • 请看我的新答案。
    • 是的,非常感谢,但是你能找到并告诉我我的代码哪里出错了吗?
    • 我不明白你的代码。因此,我提出了我的建议。
    【解决方案2】:

    这里的错误是在定义padded_array时我没有将数组的数据类型定义为int,默认是float,这就是白色图像的原因,只要我在padded_array中定义了数据是 int,一切都很好。

    【讨论】:

      猜你喜欢
      • 2021-02-21
      • 2017-01-03
      • 2011-09-29
      • 1970-01-01
      • 1970-01-01
      • 2022-11-25
      • 2018-05-18
      • 1970-01-01
      • 2021-07-20
      相关资源
      最近更新 更多