pythonによる画像処理 〜導入編〜

サーバーサイドで画像処理をする必要があったので、pythonに手を出してみることにしました。


pythonは日本ではあまり使われていないようですが、アメリカでは教育用に一番使われていたりするとのことです。

僕はC++Objective-Cをメインで触っているので、pythonが本格的に触る初めてのLL言語です。

少し触った感想としてはすごいわかりやすい言語だということ。ちょっと画像処理をしてみたい時なんか、いちいちビルドしなくても済むので便利な面も多いです。

C++に比べるともちろん処理速度は劣るので、リアルタイム性を求められる場合は向かないかもしれません。

今回はサーバーサイドでバッチ処理的に画像処理をしたかったので、pythonを使うことに決めました。

pythonはインストールされている前提での導入手順は以下のとおり。

参考図書はこちら

実践 コンピュータビジョン

実践 コンピュータビジョン


この参考図書にpythonのモジュールは1つずつpython setup.py installしながら入れましょうみたいなことが書いてありますが、pipでインストールした方がいいとのこと。

こちらを参照ください。
10分でわかるPythonの開発環境

最低限必要そうなモジュールは以下の3つ。

1. Python Image Library (PIL)

2. NumPy

3. SciPy

あとはこんなコードであっという間に反転処理が書けてしまいます。

from PIL import Image
from numpy import *

im  = array(Image.open("./images/0.jpg"))
im2 = 255 - im

result = Image.fromarray(im2)
result.save("result.jpg")


最近のメディアアート作品は画像処理、画像認識の技術を多く使った作品が多いと感じています。まだカメラやセンサとコンピュータを使ったその空間内だけで収まる作品が多いですが、カメラを使った作品でも今後はインターネットを通じて空間を超えたインタラクティブ作品が増えてくるのではないかなと感じています。

Kyle McDonaldさんの以下の作品などはそんな作品かなと思います。

Sharing Faces on Vimeo


そんな時にサーバーサイドで簡単に画像処理できると便利なのではないかなと思います。