在OpenCV中,拷贝图像数据时有两种方式:深拷贝(Deep Copy)和浅拷贝(Shallow Copy)。这两种拷贝方式的主要区别在于是否创建新的图像副本。

浅拷贝(Shallow Copy)是指将图像对象的指针复制给另一个对象,这两个对象将共享相同的图像数据。当对其中一个图像进行修改时,另一个图像也会受到影响。这是因为只复制了指针,而没有创建新的图像数据。
深拷贝(Deep Copy)是指创建一个新的图像对象,并复制原始图像的像素数据到新对象中。这样每个图像对象都拥有自己的独立像素数据,修改一个图像不会影响其他图像。
深拷贝函数copy()
原始图像:
在这里插入图片描述
代码:

import cv2
import numpy as np

img1 = cv2.imread('images/bird.png')
# 浅拷贝
img2 = img1
# 深拷贝
img3 = img1.copy()
# 修改
img1[100:200, 100:200] = [255,255,255]

cv2.imshow('img1', img1)
cv2.imshow('img2', img2)
cv2.imshow('img3', img3)
cv2.waitKey(0)
cv2.destroyAllWindows()

运行结果:
在这里插入图片描述
发现使用=号,当原图img1发生改变时,img2也随之改变,但使用copy()时,即使原图发生了改变,但是img3是一个新的图片,并未随之改变。

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐