Python 调用OpenCV函数时,原始numpy数组会发生什么情况?

Python 调用OpenCV函数时,原始numpy数组会发生什么情况?,python,opencv,numpy,memory,Python,Opencv,Numpy,Memory,我一直试图加快我的计算机视觉代码,但遇到了一个问题。如果我使用OpenCV函数,它主要将数据存储在numpy数组中,那么输出是一个确定大小的新数组,通常与源图像大小相同。我知道,如果我选择的名称不是源,那么我现在有两个不同的数组,但是如果我将它命名为相同的名称,会发生什么呢?例如: import numpy as np import cv2 img = cv2.imread('IMG_1478.jpg', 1) cv2.imshow('img', img) dilation = np.ones

我一直试图加快我的计算机视觉代码,但遇到了一个问题。如果我使用OpenCV函数,它主要将数据存储在numpy数组中,那么输出是一个确定大小的新数组,通常与源图像大小相同。我知道,如果我选择的名称不是源,那么我现在有两个不同的数组,但是如果我将它命名为相同的名称,会发生什么呢?例如:

import numpy as np
import cv2

img = cv2.imread('IMG_1478.jpg', 1)
cv2.imshow('img', img)
dilation = np.ones((10, 10), "uint8")
img = cv2.dilate(img, dilation)
cv2.imshow('img', img)
cv2.waitKey(0)
cv2.destroyAllWindows()
如果我仍然在创建数组的副本,我假设我有两个不同的数组,它们位于不同的内存地址,但具有相同的字符串值。对吗?如果是这样,python中是否有任何方法可以删除原始图像而不删除新图像?类似于我在C中所能做的?我知道我可以使用一个不同的名称,这样我就可以删除原来的名称,我只是像现在这样提出这个问题,这样我就可以更好地理解python和opencv的内存分配方法。

img=cv2。diplate(img,diplicate)
将创建一个新数组,并将名称重新绑定到它。如果旧数组的ref计数变为零,则由
img
指向的旧数组将被释放

如果不希望
displate()
创建新数组,可以将数组对象传递给
dst
参数

img=cv2.displate(img,displate)
将创建一个新数组,并将名称
img
重新绑定到它。如果旧数组的ref计数变为零,则由
img
指向的旧数组将被释放

如果不希望
displate()
创建新数组,可以将数组对象传递给
dst
参数