0

私はPILを使用して画像処理を行っていましたが、カラー画像をグレースケール画像に変換しようとしたので、Python関数を作成しましたが、PILはすでにconvertこれに関数を提供していることを知っています。

しかし、Pythonで作成したバージョンは、グレースケーリングを完了するのに約2秒かかりますが、PILはほぼ瞬時に変換されます。そこで、PILコードを読んで、私が書いたアルゴリズムはほとんど同じであることがわかりましたが、PILconvertはCまたはC++で書かれています。

それで、これはパフォーマンスを変える問題ですか?

4

2 に答える 2

3

はい、Python と C で同じアルゴリズムをコーディングすると、C 実装の方が高速になります。これは、CPython として知られる通常の Python インタープリターに当てはまります。別の実装である PyPy は JIT を使用するため、C 実装と同じくらい高速な場合もあります。しかし、CPython で実行すると、Python は遅くなります。

于 2013-01-12T03:07:19.933 に答える
2

画像処理をしたい場合は、

OpenCV(cv2)、SimpleCV、NumPy、SciPy、Cython、Numba ...

OpenCV、SimpleCV SciPy には、すでに多くの画像処理ルーチンがあります。

NumPy は c の速度で配列の操作を実行できます。

Python でループが必要な場合は、Cython を使用して、静的宣言を含む Python コードを外部モジュールにコンパイルできます。

または、Numba を使用して JIT 変換を行うこともできます。Python コードをマシン バイナリ コードに変換でき、c に近い速度が得られます。

于 2013-01-12T05:11:05.417 に答える