多次克隆NumPy数组

时间:2018-05-14 05:50:13

标签: python arrays numpy copy

我将一张图片加载到一个numpy数组中,并且需要将图片设置为两个不同的阈值。

import numpy as np
import cv2

cap = cv2.Videocapture(0)
_,pic = cap.read()
pic1 = pic
pic2 = pic

pic1[pic1 > 100] = 255
pic2[pic2 > 200] = 255

当我只希望修改pic1和pic2

时,此代码将始终编辑pic

1 个答案:

答案 0 :(得分:2)

在python中,对象和变量之间存在差异。变量是指定给对象的名称;一个对象在内存中可以有多个名称。

通过执行pic1 = pic; pic2 = pic,您将相同的对象分配给多个不同的变量名称,因此您最终会修改同一个对象。

您想要的是使用np.ndarray.copy -

创建副本
pic1 = pic.copy()
pic2 = pic.copy()

或者,使用np.copy -

完全相同
pic1, pic2 = map(np.copy, (pic, pic))

这种语法实际上使真的很容易克隆pic多次:

pic1, pic2, ... picN = map(np.copy, [pic] * N)

其中N是您要创建的副本数。