2

Python で作成されたデモ アプリケーションがあります。画像処理に OpenCV に依存する既存の C++ コード (私が作成) を多数使用しています。現在、Python と C++ 間の通信はファイル I/O とサブプロセス呼び出しを介して行われていますが、これはあまり効率的ではありません。Python から呼び出せるように C++ コードをラップする最良の方法は何ですか?

Python への移植について考えるには C++ コードが多すぎるため、実際には選択肢にはなりません。

大昔、Python OpenCV ラッパーは SWIG で書かれていましたが、最近のバージョンのラッパーは完全に異なっているようです。誰かが私を正しい方向に向けることができますか?

4

2 に答える 2

1

コードの複雑さ、C++ コードの多様性、およびそのスタイルを知らなくても、「Python の拡張」をお勧めします。

これは即時の解決策ではありません (C++ コードを変更するか、いくつかの新しい関数のプロトタイプを作成するか、C で単純なラッパー レイヤーを追加する必要があります)。しかし、複雑なプロジェクトを計画している場合 (そしてパフォーマンスが少し心配な場合) は、これが最善の方法のようです。

C++ コードを Python に移植することは一歩後退しているように思えます。Python で新しいコードを作成することは問題ありません (私はそのファンです) が、C++ は (多くの場合) より効率的です。

編集: ctypesモジュールも見てください。多分それはあなたのニーズに合っています。Python 言語でのラッピングに慣れている場合は、そのほうがよいかもしれません。C コードをいじっても構わない場合は、既存のコードでモジュールを作成して Python を拡張してください。

于 2012-06-11T08:19:27.040 に答える