Python and OpenCV - 为啥用 OpenCV 处理的裁剪图像仍然可以影响原始图像?
Posted
技术标签:
【中文标题】Python and OpenCV - 为啥用 OpenCV 处理的裁剪图像仍然可以影响原始图像?【英文标题】:Python and OpenCV - Why a processed with OpenCV cropped image can still effect the original image?Python and OpenCV - 为什么用 OpenCV 处理的裁剪图像仍然可以影响原始图像? 【发布时间】:2016-04-03 22:16:16 【问题描述】:我正在使用 Python 和 OpenCV 3 进行图像处理。
所以,我裁剪了这样的图像:
image = cv2.imread('image_path')
cropped = image[0:100, 0:100]
当我使用cropped
作为函数的参数时,即检测cropped
中的边缘,应用霍夫变换然后在其上画一条线,我注意到同样的线也被绘制到原来的image
。这是为什么?
这是否意味着cropped
图像仍以某种方式连接到原始image
?
【问题讨论】:
【参考方案1】:切片的opencv图像数据是具有不同几何形状的参考,而不是副本。它们是 numpy 数组。来自http://docs.scipy.org/doc/numpy/reference/arrays.indexing.html#basic-slicing-and-indexing 的 numpy 文档:
基本切片生成的所有数组始终是原始视图 数组。
要强制它成为副本,请使用cropped=np.array(image, copy=True)[0:100, 0:100]
。
【讨论】:
谢谢!直截了当,非常容易理解的解释!以上是关于Python and OpenCV - 为啥用 OpenCV 处理的裁剪图像仍然可以影响原始图像?的主要内容,如果未能解决你的问题,请参考以下文章
为啥OpenCV for Python的cv2.HoughLines的返回值需要用索引来访问?
为啥用Python的openCV读取图片与PIL读取的图片像素值会不一样?
Python文档阅读笔记-Number Plate Recognition with OpenCV and EasyOCR