2011
04
27
04
27
pycairoでグレースケール処理というのを、forループを使わずに
http://kyle-in-jp.blogspot.com/2009/04/pycairoo.html
↑でpycairoで画像をグレースケール処理する方法を見つけたのだけど、
forループが好きでないから途中を書き換えてみた。
書き換えはできたんだけど、実行時間が1.5倍弱と遅くなってしまった。
コードを短くまとめたら汚くて読みづらいし。ふひぃ。
*************************************書き換え部分
for ip in range(0, surface.get_stride() * surface.get_height(), 4):
ia[ip+0] = ia[ip+1] = ia[ip+2] = \
chr((ord(ia[ip+0]) + ord(ia[ip+1]) + ord(ia[ip+2]))/3)
*************************************
*************************************書き換え後
ia[0::4]=ia[1::4]=ia[2::4]=''.join(map(chr,numpy.mean((map(ord,ia[0::4]),map(ord,ia[1::4]),map(ord,ia[2::4])), axis=0)))
*************************************
↑でpycairoで画像をグレースケール処理する方法を見つけたのだけど、
forループが好きでないから途中を書き換えてみた。
書き換えはできたんだけど、実行時間が1.5倍弱と遅くなってしまった。
コードを短くまとめたら汚くて読みづらいし。ふひぃ。
*************************************書き換え部分
for ip in range(0, surface.get_stride() * surface.get_height(), 4):
ia[ip+0] = ia[ip+1] = ia[ip+2] = \
chr((ord(ia[ip+0]) + ord(ia[ip+1]) + ord(ia[ip+2]))/3)
*************************************
*************************************書き換え後
ia[0::4]=ia[1::4]=ia[2::4]=''.join(map(chr,numpy.mean((map(ord,ia[0::4]),map(ord,ia[1::4]),map(ord,ia[2::4])), axis=0)))
*************************************
スポンサーサイト