python - 多次克隆一个 NumPy 数组

标签 python arrays numpy copy

我将一张图片加载到一个 numpy 数组中,需要在 2 个不同的阈值处对图片进行阈值处理。

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

最佳答案

在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 是您要创建的副本数。

关于python - 多次克隆一个 NumPy 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50323754/

相关文章:

python - Numpy 索引到索引数组

python - 如何使函数的返回值可迭代?

python - 从路由器后面制作一个公开可用的 TCPServer

python - 如何在 Python 多处理池中运行清理代码?

python - 来自 python 的 TortoiseSVN GUI

python - 获取每个间隙的前三位数字

c - sscanf 在未知大小的矩阵上的用法?

c++ - 如何在 C++ 中打印二维数组?

javascript - 如何在 Vue.js 中取消绑定(bind)数组副本

python - 组合数组以产生新的集体数组