GAE/Pで画像をリサイズして定形のサイズにはめ込む

2011-09-26
このエントリーをはてなブックマークに追加

日本語としてややわかりにくいタイトルなのですが、つまり縦長の画像だろうが横長の画像だろうが、正方形にフレームに押し込んでしまいましょうということです。

縦横を統一のサイズにしておくことで、画像のタイリング、というか一覧表示が楽になります。これはHTML+CSSでもできそうな気がしたのですが、元画像をいじくってしまいました。

from google.appengine.api import images

_image = self.cleaned_data[‘upload_image’]
_temp = images.resize(_image.read(), 200, 200)
image_list = [(_temp, 0,0,1.0, images.CENTER_CENTER,),]

image = images.composite(image_list, 200, 200, 0)
_names = _image.name.split(‘.’)

_up = Image()
_up.image = image
_up.ext = _names[1].lower()
_up.put()

以上です。簡単ですね。

元画像はフォームからアップロードされた前提です。Djangoのフォーム使ってますので、webappとか使ってる人は読み替えていただければ。

上記の例では、resizeは縦横の長いほうが200pxになるようにリサイズしてくれます。縦横比は変わりません。これを200×200の土台の真ん中に貼りつけてやるという流れです。

それが、「images.composite()」になります。

 

Tags: ,

OpenCVをPythonから叩いて画像をぼかす

2011-09-05
このエントリーをはてなブックマークに追加

OpenCVをインストールしただけでは面白く無いので、早速使ってみることにしました。まずは画像をぼかしてみようと思います。

import cv

_image = cv.LoadImage(元画像ファイルパス)
_clone = cv.CloneImage(_image)
cv.Smooth(_image, _clone, 1, 5, 0, 0, 0)

cv.SaveImage(加工後画像の保存先ファイルパス, _clone)

これだけです。OpenCVのバージョンによって多少扱い方が異なります。今回はOpenCV2.2です。

Smoothの最初の引数が元画像、次が加工先。3番目が平滑化方法で、0〜4で指定します。詳しいパラメータの詳細はこちらで。

これが元画像で、

こちらが加工後のぼかされた画像

ぼかし具合はパラメータいじると調整できます。

OpenCVはちょっととっつきにくいですが、できることが多くて楽しいです。

Tags: ,

MacOS(Lion)にOpenCVをインストールしてPythonからいじる

2011-09-05
このエントリーをはてなブックマークに追加

画像変換処理をいろいろやっているとPILでは物足りなくなってくる時があります。ImageMagickでもよかったのですが、ここがOpenCVを導入してみることにしました。

インストールは簡単、MacPortsを使います。最近はHomebrewが流行りっぽいのですが、特にMacPortsで困っていなかったのでMacPortsのままで。

sudo port install opencv +python27

なんという簡単さ。これだけでOpenCVがインストールできてPythonからさわれるようになります。MBAで30分ちょっとでインストールは完了です。

Pythonを起動して、

import cv

と叩いてエラーが出なければOKです。