RGBの行列を一次元に分解し、また結合して三次元カラーに戻す(Python&numpy)
コツコツ書いていきます。
タイトルからしてわけわかんない!
語彙力!
ということでまたpythonについて。
Pythonのnumpyとopencvを使っていてふと思った。
「numpyのRGB画像をそれぞれ1次元に分解はできるけど結合どうやるんや…」
つまりnumpyのshapeで見ると
(256,256,3) -> (256,256) (256,256) (256,256)
(256,256) (256,256) (256,256) -> (256,256,3)
という処理ですはい。
早速コードを。
import numpy as np import cv2 #RGBのサイズは同じでなければならない。 imR#Red imG#Green imB#Blue print imR.shape print imG.shape print imB.shape org = np.dstack((imB, imG)) org = np.dstack((org, imR)) #入れ子で表記すると #org = np.dstack((np.dstack((imB, imG)), imR)) # 画像表示 cv2.imshow("Show Color Image", org) # キー入力待機 cv2.waitKey(0) # ウィンドウ破棄 cv2.destroyAllWindows()
imR,imG,imBには任意の画像を入れてください。ただしサイズは同じで! np.dstackではなくnp.vstackにすると
(512,512) (512,512) (512,512) -> (1536, 512)
になっちゃいます。
np.dstackならば
(512,512) (512,512) (512,512) -> (512,512,3)
なので間違いないように!
今日も良いPythonライフを!