Terasannのチラ裏

「それはTeraさんに聞け」を目指すブログ

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ライフを!