以前、
PILを使って3chから1chだけ抜き取る
コードを教えて貰いました、
で、これは一般的に、画像認識に使用されているコードなんでしょうか?
(画像認識では、3chをそのまま扱っている所は少なく、大体どこも1chですよね?)
以下、その教えて貰ったコードになります。
python
1import numpy as np 2from PIL import Image 3 4path = "./sample.png" 5 6# PILで開いたうえでデータをNumpy形式にする 7# (例えばJPEGは圧縮されていてNumpyな配列になっていないので、 8# そこからNumpyのデータ空間(?)に持ってくる必要がある) 9img = np.asarray(Image.open(path)) 10 11# 元画像のshape (PILではchはRGB) 12# print(img.shape) 13 14# カラー画像の時Gだけ抜き取りたい 15if len(img.shape) ==3: 16 h, w, ch = img.shape 17 18 # RGBのGだけ抜き取りたい 19 img_g = img[:,:,1] 20 21 # Numpy配列 22 print(img_g) 23 # [[ 28 28 255 255 0 0] 24 # [ 28 28 255 255 0 0] 25 # [ 0 0 127 127 255 255] 26 # [ 0 0 127 127 255 255]] 27 28 29 # ################################ 30 # print("以下デバグ") 31 # list_ch = ["R", "G", "B"] 32 # 33 # #デバグ用 RGBを走査 34 # for i in range(ch): 35 # img_single_ch = img[:,:,i] 36 # 37 # print(list_ch[i],img_single_ch.shape) 38 # # OS標準のビューワーで開く 39 # Image.fromarray(img_single_ch.astype(np.uint8)).resize(size=(w*10,h*10),resample=Image.NEAREST).show()
何が言いたいかというと、これはGのデータだけ抜き出している?らしいのですが、
通常の1ch画像認識でも、Gのデータのみで処理を行っているのかなぁと、まず。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。