如何在Python中使用另一个值扩展元组?

时间:2018-06-13 10:08:56

标签: python opencv

尽管关于元组有很多问题,但我还没有找到合适的方法。

我使用python和OpenCV。我想初始化一张黑色图像,它与我正在处理的另一个图像大小相同。我在一个函数中这样做。所以我的功能看起来像这样:

def myfunc(size):
   nsize = [];
   nsize.append(size[0])
   nsize.append(size[1])
   nsize.append(3);
   black_img = np.zeros(nsize,np.uint8)

当我打电话时,我称之为

myfunc(base_image.shape)

在我的函数中,我创建了一个新列表(因为shape给出了一个不可变的元组)并附加了size和3的值,它代表了opencv图像中的通道数。

这是正确的方法吗?还是有另一种扩展元组的方法吗?

3 个答案:

答案 0 :(得分:1)

你可以这样做:

black_img = np.zeros(size + (3,), np.uint8)

答案 1 :(得分:1)

由于元组是不可变的,所以你不能“扩展”一个元组,但你可以通过连接两个或多个元组来创建一个新的元组:

>>> t1 = (1, 2, 3)
>>> t2 = (0, 0, 0)
>>> t = t1 + t2
>>> t
(1, 2, 3, 0, 0, 0)

答案 2 :(得分:1)

当可以在一行中完成时,无需编写四行代码

  1. 您可以将图像的形状原样传递给np.zeros()

    new_image = np.zeros(old_image.shape, np.uint8)
    
  2. 您还可以使用np.zeros_like()

    im = cv2.imread('apple.png', 1)
    
    im.shape
    Out[213]: (369, 369, 3)
    
    black = np.zeros_like(im)
    
    black.shape
    Out[215]: (369, 369, 3)