1
私はC++コードをSWIGでうまくラップし、Pythonにうまくロードします。私はOlena library for image processingを使用しています。参照でPythonのC++関数を呼び出す
しかし、イメージへのポインタを必要とする私の関数を呼び出す方法はわかりません!次のように例えば
は、画像を侵食のための私の関数がプロトタイプ宣言されています。Pythonの中に私のコードを実行しているの
mln::image2d<mln::value::int_u8> imErossion(
const mln::image2d<mln::value::int_u8> *img, int size, int nbh
);
結果:
from swilena import *
from algol import *
image = image2d_int_u8
ima = image.load("micro24_20060309_grad_mod.pgm")
eroded_ima = imErossion(ima,1,8)
>>>> Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: in method 'imErossion', argument 1 of type
'mln::image2d<mln::value::int_u8 > const *'
私がしようとするすべてのWebを中心に探していますこれを自分で解決することができますが、それは私の予想以上に困難になります。
私は、Pythonからポインタを渡すするかどうかはわかりません - このC++コードに相当する:
eroded_ima = imErossion(&ima,1,8)
私はLikeMagicと呼ばれるC++バインディングライブラリを書いています。これはSWIGと同様の目的のためです。あなたがそれをやっていることがベストプラクティスであるかどうかは言えませんが、あなたがこの答えで提案する解決策は、私がやったことであり、個人的にはまだ問題に陥っていません。 LikeMagicはほとんどの型変換のケースを自動的に処理するよう書いていましたが、ライブラリを扱うのが不便で、C++でヘルパー関数を書いているだけのケースもあります。 – Dennis
このプログラムは、htmlフロントエンドを持つapacheサーバーを通じて複数のユーザーに使用されますが、リクエストごとに新しいプロセスを作成しているので、グローバル変数を定義しても問題ありません。 「真の並行性」を心配する – kersian