AI-MASTER WIKI

Pythonプログラミング―画像を扱う の変更点


#author("2017-11-15T23:17:37+09:00","","")
#author("2017-11-15T23:24:17+09:00","","")
#contents

*Pythonで画像を扱う準備 [#s5d88bed]
**画像の構成要素 [#qdc0fb70]
画像は、ピクセル(画素)という点の集合でできています。
ピクセルは座標のデータ(x座標、y座標)と、その座標での色情報を持っています。

***座標の情報について [#ebdaf0ce]
x軸が横軸、y軸が縦軸となりますが、それぞれの数字で、画像のどこの場所にあるかを指示しています。
例えば、以下のような画像があった場合~
□□□□□□□□□□□□~
□□□□□□□□□□□□~
□□□■□□□□□□□□~
□□□□□□□□□□□□~
□□□□□□□□□□□□~
□□□□□□□□□□□□~

黒い点の部分は、左から4番目、上から3番目のピクセルなので、(4,3)という座標になります。

***コンピュータが扱う色の情報 RGBAとは [#b01ec995]
コンピュータが色の情報を扱うとき、RGBA値というもので表現します。~
R・・・RED(赤)~
G・・・GREEN(緑)~
B・・・BLUE(青)~
A・・・ALPHA(透明度)~
をつなげて、RGBAと呼んでいます。
色は赤・緑・青の三原色によって表現されますが、それぞれどのくらい混ぜるかという数値によって、色を表現しています。

例えば、以下のようになります。~
RGBA値が(255,0,0,255)の場合、純粋な赤色。~
RGBA値が(255,255,255,255)の場合、白。~
RGBA値が(0,0,0,255)の場合、黒。~
RGBA値が(255,255,0,255)の場合、黄色。~

**画像を扱うモジュール「Pillow」の使い方 [#g3dc1169]
***Pillowモジュールをインストールする [#n99c3846]
Pillowのモジュール名は「pillow」です。
例えばWindowsの場合は、コマンドラインから~
pip install pillow~
と入力してください。
その他のOSの場合やうまくいかない場合は、[[サードパーティのモジュールを使用する]]をご覧ください。

***Pillowのモジュールを読み込む [#n04289e9]
Pillowのモジュールを読み込むには、以下のような分を追記します。~
''from PIL import モジュール名''~
例えば、画像を読み込むスタンダードなImageモジュールの場合は、~
from PIL import Image~
となります。

*Pillowモジュールを使ってみる [#m4d13caf]
**画像の読み込み・作成・書き出し [#m84166ca]
***画像の読み込み [#s29c8d3b]
''変数名 = Image.open('ファイル名')''~
と記述します。この変数にファイルデータが読み込まれます。

***画像の作成 [#da71bd1f]
''変数名 = Image.new('カラーモード',(幅,高さ),RGBA値)''~
と記述します。
例えば、カラーモードRGBAで、赤色の幅150ピクセル・高さ300ピクセルの長方形を作成して、変数名「red_box」に読み込ませたい場合は、~
red_box = Image.new('RGBA',(150,300),(255,0,0,255))
と記述します。

***画像の書き出し [#w0c81864]
''画像を読み込んでいる変数名.save('ファイル名')''~
と記述します。
例えば、red_boxという変数に画像データを読み込ませていて、「red.png」というファイル名で保存したい場合には、~
red_box.save('red.png')~
と記述します。

**画像の情報を取得する [#af5d09fa]
***画像のサイズを取得する [#ba6d2da2]
''画像を読み込んでいる変数名.size''~
と記述します。
例えば、aimy_imgという変数名に画像を読み込ませている場合、~
aimy_img.size~
と記述します。
なお、この時、aimy_img.size[0]に幅が、aimy_img.size[1]に高さの情報が保存されています。

**画像を加工する [#d163ae0f]
***画像をコピーする [#v1d47c1e]
''新たに画像オブジェクトを読み込ませる変数名 = 画像を読み込んでいる変数名.copy()''~
のように記述します。
oldという変数に読み込ませていた画像データをnewという変数にコピーしたい場合には、~
new = old.copy()~
のように記述します。
画像に変更を加えたいものの、変更前の画像も残しておきたいときなどに使います。

***画像を貼り付ける [#h1c75b8f]


***画像のサイズを変更する [#e1c1cc4f]
***画像を切り抜く [#l753c8b2]
***画像を回転する・反転する [#p785ef7a]