2017-05-01 5 views
0

私は、サイズ(227,227,3)のRGBイメージとサイズ(227,227)のグレースケールイメージを持っています。ここでは、画像のRGB面をグレースケール画像で置き換えたいと考えています。私は以下のコードを持っています。さて、コードの問題はimgNewです。私は値を変更せず、間違った画像をimgR,imgG,imgBに取得していますが、オーバーライドされています。Pythonコードで問題が発生しました。なぜ変数がオーバーライドされていますか?

#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. 

何が問題なのですか。

+1

http://stackoverflow.com/questions/2612802/how-to-clone-or-copy-a-list –

答えて

4

これは本質的にimgBimgNewと同じ画像にします。したがって、次の行でimgBを操作すると、imgNewも変更されます。 imgBimgNewのコピーにしたい場合は、明示的にコピー機能を使用する必要があります。

+0

コピー機能は何ですか? – talos1904

+0

'imgNew.copy()' –

+0

私はnumpyを使用しているので、 'np.copy()'がうまくいくと思いますか? – talos1904

関連する問題