python代码的问题,为什么变量会被重写?
我有一个大小为(227227,3)的RGB图像和一个大小为(227227)的灰度图像。现在我想用灰度图像替换图像的RGB平面。下面我有代码。现在,代码的问题是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
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()
下面的链接解释了您遇到的问题。