私の人生にとって、私はこの24時間、これに苦労しています。私は4Dアレイに画像を保存するNeural Netをやっています。配列の最初のインデックスは、基本的にはサンプル「1,2,3」などのサンプルです。ディメンション2,3,4は128x128 x3 rgbピクチャです。今、この過程で、私は入力画像(128x128ではない)を取り出し、それらの画像を再スケーリングします。しかし、サンプルを選んだとき、すべてのカラーチャンネルが混ざり合っていました。だから私は問題がどこにあるのか理解しようとしました。pyplot.imshow()が配列内のカラーチャンネルを変更するのはなぜですか?
ピクチャのサイズを変更してnummber配列(128x128x3)を変数に割り当てると、すべてが「正常」です。より大きい4-d配列に 'サブアレイ'を割り当てると、カラーチャンネルが混ざり合ってしまいます。しかし、元の画像を復元するには255から同一のアレイスライスを減算してください。
元の(1)、サイズ変更された(2)、カラーチャンネルミックス(3)、回復済みのコードスニペット4)。
私はopen cvとpyplot.imshow()が異なる色チャンネルを使用していることを知っていますが、画像を大きな配列に格納することがスイッチの原因です - それは私を混乱させます。いくつかの指針は認められるでしょう。
また、配列(img2-train [0])を「弱体化」してすべての0の配列を取得できます。その部分は本当に混乱しています。それらは同じ数字ですが、imshow()は全く異なる2つのイメージを与えます。
import numpy as np
import cv2
import matplotlib.pyplot as plt
img = cv2.imread(<path to your pic>)
img2 = cv2.resize(img, (128, 128))
train = np.ndarray(shape=(1,128, 128,3))
plt.subplot(1,4,1)
plt.imshow(img)
plt.subplot(1,4,2)
plt.imshow(img2)
plt.subplot(1,4,3)
train[0] = img2
plt.imshow(train[0])
plt.subplot(1,4,4)
plt.imshow(255-train[0])
plt.show()
は、チャンネルはdoesnの反転:ニューラルネットを供給する際に奇数挙動は、しかし、あなたはあなたのデータは何とか
第三のプロットのための「修正」はちょうどそのある「微調整」取得されていないことを確認したいです元の画像を戻しません。 2番目と3番目の画像を比較すると、それらは同じ数値のセットです(減算するとゼロになります)。私は、カラーチャネル(train [0、:、:、:: - 1)を反転させることで、 – RDS