Python 和 OpenCV - 为什么经过 OpenCV 处理的裁剪图像仍然可以影响原始图像?

Python and OpenCV - Why a processed with OpenCV cropped image can still effect the original image?

我正在使用 Python 和 OpenCV 3 进行图像处理。

所以,我裁剪了这样一张图片:

image = cv2.imread('image_path')
cropped = image[0:100, 0:100]

当我使用 cropped 作为函数的参数时,即我检测 cropped 中的边缘,应用霍夫变换然后在其上画一条线,我注意到同样的线也绘制到原来的 image。这是为什么? 这是否意味着 cropped 图像仍然以某种方式连接到原始 image

切片的opencv图像数据是具有不同几何形状的参考,而不是副本。它们是 numpy 数组。来自 http://docs.scipy.org/doc/numpy/reference/arrays.indexing.html#basic-slicing-and-indexing 的 numpy 文档:

All arrays generated by basic slicing are always views of the original array.

要强制它成为副本,请使用 cropped=np.array(image, copy=True)[0:100, 0:100]