gpt4 book ai didi

python - 调用 OpenCV 函数时原始 numpy 数组会发生什么?

转载 作者:太空宇宙 更新时间:2023-11-03 23:18:31 25 4
gpt4 key购买 nike

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

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.dilate(img, dilation) 将创建一个新数组并将名称 img 重新绑定(bind)到它。如果旧数组的引用计数变为零,则 img 指向的旧数组将被释放。

如果您不想dilate() 创建新数组,您可以将数组对象传递给dst 参数。

关于python - 调用 OpenCV 函数时原始 numpy 数组会发生什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35095252/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com