2016年4月23日 星期六

python 讀 bitmap 顯示它的值

原本想寫一個smooth演算法的。
但是,想不到python的前置作業還滿麻煩的。(小小的不習慣)

我準備了一張這樣的影像
顏色: 灰階
色階: 8bit/pixel (我比較喜歡叫演色性)
大小: 5 pixel ×5 pixel

原本不打算使用任何的lib進行coding,但是因為手邊並無「沒有檔頭」的影像。
準備好的影像檔,也是.bmp格式,所以就去找了一下適合的lib來解決檔頭的問題。

找到了一個叫PIL的lib,好像很厲害。
跟著這一份教學,有小小的練習了一下,如果當初研究(研究影像處理)所是用python,不知道會是怎麼樣的情況呀(遠望)

說遠了

然後,這次的實作,只有將影像讀取出來,並且顯示所有的pixel值。
from PIL import Image

bmp_image = Image.open( 'sample.bmp' )

for i_vertical in range(bmp_image.height):
    line_horizon = [bmp_image.getpixel((i_horizon, i_vertical)) for i_horizon in range(bmp_image.width) ]
    print(*line_horizon)

bmp_image.close()
effective python說用這樣比較快
from PIL import Image

bmp_image = Image.open( 'sample.bmp' )

line_horizon = (bmp_image.getpixel((i_horizon, i_vertical)) for i_vertical in range(bmp_image.height) for i_horizon in range(bmp_image.width))
for x in range(bmp_image.height):
   for y in range(bmp_image.width):
      print(next(line_horizon), ' ', end = '')
   print('')

bmp_image.close()
執行結果:
(我有手動讓它對齊)
255   0   0   0   0
255 255   0   0   0
255   0 255   0 255
  0 255   0 255   0
  0   0   0 255   0
255 255 255 255 255

沒有留言:

張貼留言