私はカメラのいくつかの機能を設定できるようにするC++インターフェイスを備えたUSBカメラ(uEye)を持っています。 C++プログラムは、カメラから画像データを読み込み、あらかじめ割り当てられたメモリのどこかに格納することができます。これらはすべてWindows上で動作します。C++とPythonの間でビデオデータを共有する
Pythonでnumpyを使用すると、画像を操作して処理アルゴリズムを処理するための時間を費やすことができます。
私は何をしたいのです:
- は、カメラを設定し、(ビデオレートで)画像を得るために、C++プログラムを使用して、
- は、Pythonへのデータで
- プロセスのデータを渡しますPythonの
私は私は2つのスタンドアロンシステムを持っていることを好むように私はPythonのものにせずにカメラを使用することができます(私はC++でPythonやPythonでC++を埋め込むたくない印象で、午前または使用 カメラなしのPythonのもの)。
これまでのところ、パイプ、ソケット、またはマップされたメモリを使用してデータを共有する方法がありましたが、少量のデータや文字列に限定されているようです。しかし、私が見つけることができないのは、これが十分速く、実装しようとするべきことがあるかどうかを示す指標です。私はこれをしたいと思いますか?
これが悪い考えであれば、何が良い選択肢でしょうか? PythonコードをC++に埋め込むか、その逆にする?あるいは、開発時間の節約がプロセス間通信を機能させるための追加的な努力を相殺しないので、Pythonを一括して削除することもできますか?
私が最後にPythonでグラフィックスアルゴリズムを実装したとき(numpyで)、速度が遅すぎてC++に変換しなければなりませんでした。速度の向上は約20倍でした。だからリアルタイムにやりたいのであれば、再考するべきかもしれません。 – rodrigo
私はあなたの意見を見ます。おそらく、ボトルネックは、Pythonでの処理であり、ファイルを転送媒体として使用することは、Pythonでの処理で達成可能なフレームレートに追いつくのに十分高速です。そして、必要な処理ステップが決まったら(私はmatplotlibでカラフルなプロットを作っています)、すべてをC++に移すことについて考えることができます。私は、ディスクからファイルを読み書きするのをスキップし、同じことをメモリから行うことができればと思っていました。 – Daan