python - 多次克隆 NumPy 数组
问题描述
我将一张图片加载到一个 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
-</p>
创建副本
pic1 = pic.copy()
pic2 = pic.copy()
或者,非常相似,使用np.copy
—</p>
pic1, pic2 = map(np.copy, (pic, pic))
这种语法实际上使您可以轻松地进行多次pic
克隆:
pic1, pic2, ... picN = map(np.copy, [pic] * N)
N
您要创建的副本数在哪里。
推荐阅读
- python-3.x - 将文件上传到长度超过 63 个字符的 s3 存储桶路径
- python - 间隔类 - Python
- azure - 如何使用云外壳 SSH 进入 AKS 群集并测试来自 AKS 内部的连接
- c++ - 为什么将函数 create_ll 和 display 的返回类型从 struct node* 更改为 void 后,链表的元素没有显示?
- database - 我怎样才能像这些表一样标准化
- java - 如何告诉 Google 我尝试执行该任务?
- string - Python-将字符串的二维列表转换为字符的二维列表
- java - Mockito 不模拟被模拟对象的字段
- c# - 使用 Invoke 时未捕获异常
- spring-boot - Gradle 未找到 Spring Boot 依赖项