【问题标题】:Adding zeros spaces to an array of a picture将零空格添加到图片数组
【发布时间】:2017-07-07 02:08:36
【问题描述】:

我有一个图像定义为:

imagen = scipy.misc.imread("C:\\Users\\Reymi\\Downloads\\imagen.png")

它的大小为 (1929,1280) 我需要在数组的每一侧添加 2 列和 0 行,这样我就可以使用内核而不必担心它会超出数组。

怎么样?谢谢

【问题讨论】:

    标签: python arrays numpy scipy


    【解决方案1】:

    使用pad函数:

    im_new = scipy.pad(array=imagen, pad_width=[2, 2], mode='constant', constant_values=0)
    

    上面的函数使数组在所有方向上都变大了 2。如果您想 替换 用 0 的外部两个像素而不使图片变大我不 认为 有一个内置函数,但我会做类似的事情:

    pad = 2
    im_new = scipy.zeros_like(imagen)
    im_new[pad:-pad, pad:-pad] = imagen[pad:-pad, pad:-pad]
    

    这会创建一个 0 的图像,然后用 imagen 的中间部分填充中间。

    【讨论】:

    • 或者,如果使用 numpy,np.pad(imagen, ((0, 0, (2, 2), 'constant')
    • 它要求一个“模式”参数。还有什么是sp? scipy?
    【解决方案2】:

    选项 - 1 - 使用 OpenCV

    imagenBorder = cv2.copyMakeBorder(imagen,2,2,2,2,cv2.BORDER_REFLECT)
    

    选项 - 2 - 手动填充到 numpy 数组

    import numpy as np    
    borderWidth = 2
    i = 0
    while i < borderWidth:
        imagen = np.insert(imagen, 0, 0, axis=1)
        imagen = np.insert(imagen, imagen.shape[1], 0, axis=1)
        imagen = np.insert(imagen, 0, 0, axis=0)
        imagen = np.insert(imagen, imagen.shape[0], 0, axis=0)
        i = i+1
    

    【讨论】:

      猜你喜欢
      • 2018-09-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-05-21
      • 1970-01-01
      • 2021-12-31
      相关资源
      最近更新 更多