python代码的问题,为什么变量会被重写?

python代码的问题,为什么变量会被重写?,python,numpy,Python,Numpy,我有一个大小为(227227,3)的RGB图像和一个大小为(227227)的灰度图像。现在我想用灰度图像替换图像的RGB平面。下面我有代码。现在,代码的问题是imgNew正在被覆盖,即使我没有更改它的值,也没有为imgR、imgG、imgB获取错误的图像 #this is my rgb image imgNew = imresize(img[480 / 2 - 160 + r[l, 0]:480 / 2 + 160 + r[l, 0], 640 / 2 - 160 + r[m, 1]:640

我有一个大小为(227227,3)的RGB图像和一个大小为(227227)的灰度图像。现在我想用灰度图像替换图像的RGB平面。下面我有代码。现在,代码的问题是
imgNew
正在被覆盖,即使我没有更改它的值,也没有为
imgR、imgG、imgB
获取错误的图像

#this is my rgb image 
imgNew = imresize(img[480 / 2 - 160 + r[l, 0]:480 / 2 + 160  + r[l, 0], 640 / 2 - 160 + r[m, 1]:640 / 2 + 160  + r[m, 1], :],(227,227))
# this is grascale 
imgDNew = imresize(imgx[480 / 2 - 160 + r[l, 0]:480 / 2 + 160  + r[l, 0], 640 / 2 - 160 + r[m, 1]:640 / 2 + 160  + r[m, 1]],(227,227))
# if I plot the images here both are fine. 
# Now replacing the planes one by one. 
imgR[:,:,0] = imgDNew
imgR[:,:,1] = imgNew[:,:,1]
imgR[:,:,2] = imgNew[:,:,2]

imgG[:,:,1] = imgDNew
imgG[:,:,2] = imgNew[:,:,2]
imgG[:,:,0] = imgNew[:,:,0]

imgB = imgNew
imgB[:,:,2] = imgDNew
imgB[:,:,0] = imgNew[:,:,0]
imgB[:,:,1] = imgNew[:,:,1]

 #Now if I plot the images my original image is changed (imgNew) and imgR,imgG,imgB images are wrong. 

我不明白出了什么问题?

你有这样一句话:
imgB=imgNew
,这本质上使得
imgB
imgNew
是同一个图像。因此,当您在下面几行中操作
imgB
时,它也会更改
imgNew
。如果你想让
imgB
成为
imgNew
的副本,你必须明确地使用一个复制函数。

你有这样一句话:
imgB=imgNew
,这实际上使得
imgB
成为与
imgNew
相同的图像。因此,当您在下面几行中操作
imgB
时,它也会更改
imgNew
。如果您希望
imgB
成为
imgNew
的副本,则必须明确使用复制函数。

该复制函数是什么?
imgNew.copy()
以下链接解释了您遇到的问题。复制函数是什么?
imgNew.copy()
下面的链接解释了您遇到的问题。