読者です 読者をやめる 読者になる 読者になる

夢に向かって、好奇心を持ち、疑問を持ち続ける。それが努力。

博士課程に在学するロボット好き学生のブログです。

PILを使って画像の各ピクセルの色を取得する

Macを使ってPython Image Library(PIL)をインストールし,画像の各ピクセルのRGB値を取得する手法を紹介します.

1.まずPILをインストールする
 jpeg画像を用いる場合には,jpeg decoderのインストールが必要なので,注意.

 http://www.ijg.org/files/jpegsrc.v8c.tar.gzをダウンロードして解凍.
 解凍ディレクトリに移動し,下記を実行.

 $ ./configure
 $ make
 $ sudo make install

 その後,pilをインストール.

 $ sudo pip install pil

 以上で,PILのインストールは完了.


2.次に,PILを使ってRGB値を取得してみます.

 サンプルコードは下記の通り.

import Image

img = Image.open("test.jpeg")
img.convert("RGB")

pixelSizeTuple = img.size

rlist = []
glist = []
blist = []

for i in range(pixelSizeTuple[0]):
	for j in range(pixelSizeTuple[1]):
		r,g,b = img.getpixel((i,j))
		rlist.append(r)
		glist.append(g)
		blist.append(b)

f = open('output.csv', 'w')
f.write("r,g,b\n")
n = len(rlist)
for i in range(0,n-1):
    f.write(str(rlist[i]) +"," + str(glist[i])  +"," + str(blist[i]) +"\n")

f.close()

こんなコードを書けば,output.csvファイルの各列にRGB値を出力できます.


ちなみに,最初はPILインストールしただけだったので,
decoder jpeg not available というエラーでつまったんですが,
下記のサイトを参考に,再インストールしたらできました.

http://kwmt27.net/index.php/2013/07/14/python-pil-error-decoder-jpeg-not-available/