2

現在、TkinterとPILを使用してPythonで画像ビューアを作成していますが、画像の読み込みを高速化したいと考えています。したがって、TkinterとPILでLibjpeg Turboをインストールして利用する方法、またはpyQTや別のイメージングライブラリなどの別のGUIツールキットを使用する必要がある場合でも(OpenCVと呼ばれるものを見つけましたか?)

では、基本的に、Pythonで大きな画像を読み込んだり、サイズを変更したり、表示したりするための最良かつ最速の方法は何でしょうか。

編集:主なボトルネックは画像​​のサイズ変更であると思います。それは表示されますが、その前は画像の読み込み自体です。私は本質的にPythonの初心者なので、そのようなものを測定する方法がわからないので、はっきりとはわかりません。

そして私がやっていることは基本的にミニマルな画像ビューアです。私のコードを見たい場合はここにあります:http://pastebin.com/fwf8b0cU

編集2:私はcProfileをたくさん実行し、いくつかのコードを修正し、いくつかの速度低下を修正しました。だから今私の質問は本質的に私はpyQTのような別のGUIツールキットまたは別のイメージングライブラリを使用するべきかということです(私はOpenCVと呼ばれるものを見つけましたか?)。

4

3 に答える 3

1

ボトルネックの原因を絞り込みたい場合は、コードのさまざまなセクションでtimeitを呼び出すことから始めます。それでも解決しない場合、または手間がかかりすぎると思われる場合は、Python プロファイラーを調べてください。

于 2011-09-08T22:45:46.763 に答える
1

libjpeg-turboの Python ラッパーであるPyTurboJPEGを見てみると、大きな JPEG 画像をデコードする際に非常に高速な再スケーリング (1/2、1/4、1/8) が可能です。

from turbojpeg import TurboJPEG

# specifying library path explicitly
# jpeg = TurboJPEG(r'D:\turbojpeg.dll')
# jpeg = TurboJPEG('/usr/lib64/libturbojpeg.so')
# jpeg = TurboJPEG('/usr/local/lib/libturbojpeg.dylib')

# using default library installation
jpeg = TurboJPEG()

# direct rescaling 1/2 while decoding input.jpg to BGR array
in_file = open('input.jpg', 'rb')
bgr_array_half = jpeg.decode(in_file.read(), scaling_factor=(1, 2))
in_file.close()
于 2018-01-13T12:05:28.050 に答える