Python 学習:Image処理

2014-03-06 :  PCクリニック
本文の前に、
-・・・ -・-
現時点での、blogramのランクインカテゴリは、
2、2、2、1、2、 0、0、0、0、1(38)で、換算ポイント 57pt 。
「Firefox」昨日朝5位から3位にupだが、夜に4位にdown。
さらに、今朝方5位にdown。
「グルコサミン」昨日朝4位にupだが、今朝方5位にdown。
結果、一昨日と変わらず。
・-・ - -・

さて、本文。

前記事(2014-03-04):
Python 学習:Interpolation
に続いて、Python の学習。

今回は、画像(実質、8bpp TIFF)データの読み込み、書き出し。
即ち256階調のグレイスケールについて。
“PIL”で云うところの“Image mode”= 'L' の Image。
(下記参照)


昔(10年以上前)から使っている「ActiveBasic」で、
8ビットモノクロTIFF画像入出力モジュールを作っていた。
入力は制限付き、出力は無圧縮のみ。

そして、4年ほど前(2010-04-30)の記事:
AB vs C
の頃から、MinGW に移植した。


最近では、
主な使用言語が「Perl」になり、
入出力とも、「Imagemagick」の「Convert」のお世話になっている。
昨年(2013-09-07)の記事:
Perl で、TIFFファイル出力


さらに、書き出すだけなら自前で出来そうなので、
ActiveBasic や MinGW の出力部分のみだが、Perl に移植した。

このモジュールは、更に「R」にも移植した。


だが、読み込みは難しく、未だに「ImageMagick」が必須である。


さて、前置きが長くなったが、
「Python」ではどうなるか?

参考としている「Python入門から応用までの学習サイト」の
画像処理
に、
 「PILのダウンロード」&「インストール」
そして、
 「イメージファイル情報の取得」
がある。

インストールしたパッケージは、
ActivePython VM に導入
と同一手順で、
  ・・・・・
  4.PIL これは、発展形の、 Pillow-2.3.0 ・・・ 1.39MB
  ・・・・・
を入れている。
「Pillow」と「PIL」の違いは未だ分からないが、・・・


早速、試してみた。

from PIL import Image
img = Image.open( 'test.tif' )
print img.format, img.size, img.mode

これで、読めそう。

他から仕入れた“getdata”関数を使ってみた。
以下を追加。

px = img.getdata()
print len(px) # 読み込めたかの確認
for i in range(30): print px[i] # 一部内容確認

たったこれだけ?

Python はスバラシい。と云うか「PIL」パッケージか?

他のツール不要。自作せずともたった3行:

from PIL import Image
img = Image.open( 'test.tif' )
px = img.getdata()

で読める!!!



今度は、書き出し???

本家「Pillow v2.3.0 (PIL fork)」のマニュアル
Pillow: a modern fork of PIL
の「Image」モジュールについて学習し、
そして、「Image mode」については、
Concepts」ページの
  1 (1-bit pixels, black and white, stored with one pixel per byte)
  L (8-bit pixels, black and white)
  P (8-bit pixels, mapped to any other mode using a color palette)
  RGB (3x8-bit pixels, true color)
  RGBA (4x8-bit pixels, true color with transparency mask)
  CMYK (4x8-bit pixels, color separation)
  YCbCr (3x8-bit pixels, color video format)
  I (32-bit signed integer pixels)
  F (32-bit floating point pixels)
から、'L' ですね。


それで、テスト・コードは、

from PIL import Image
img = Image.new( 'L', ( 2, 3 ) )
dT = [ 50,100 , 120,200 , 255,0 ] # 並びは、左上から右下
img.putdata( dT )
img.save( 'test.tif' )


これで、2列3行のTIFF画像が書き出せた。
全ソース・コードは、僅か5行!!!


8bpp TIFF の読み込み/書き出しは、
あっけない位シンプルだった。


もっともっと、Python の学習に精進します。



見ていただいた序でとは厚かましい限りですが、
お帰りに投票して頂けるとなお嬉しいです。 ⇒ blogram投票ボタン


140216,21
関連記事
スポンサーサイト

コメントの投稿

管理者にだけ表示を許可する

おきてがみ/blogram
blogram投票ボタン



おきてがみ

最新記事
カレンダー
08 | 2017/09 | 10
- - - - - 1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
月別アーカイブ
カテゴリ
最新コメント
検索フォーム
リンク
プロフィール

<紙>

Author:<紙>
ようこそ。
「パソコンヲタクの雑記帳」
もろもろなことを綴っています。
パソコン ヲタクってねくら?
画像は kami でなく kani です。

カウンター(fc2、i2i) /Google Analytics


i2i(from 2010-08-24)
Total =
Today  =  
Yesterday=
アンチエイジング

Google Analytics
ブックマーク