我已经使用SWIG成功包装了我的C ++代码,它可以很好地加载到Python中。我使用的是Olena library for image processing。
但是,我不知道如何调用需要指向图像的指针的函数!
例如,我的侵蚀图像的功能原型如下:
mln::image2d<mln::value::int_u8> imErossion(
const mln::image2d<mln::value::int_u8> *img, int size, int nbh
);
在Python中运行我的代码的结果:
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 *'
我一直在网上寻找尝试自己解决这个问题,但它变得比我预期的更难。
我不确定如何从Python传递指针 - 相当于这个C ++代码:
eroded_ima = imErossion(&ima,1,8)
答案 0 :(得分:3)
我和我的大学教授一起检查过,我们决定最好实现一个函数,当这个函数被加载并声明为全局时会返回指针:
mln::image2d<mln::value::int_u8> working_img;
mln::image2d<mln::value::int_u8> *imLoad(const std::string path){
mln::io::pgm::load(working_img, path);
return &working_img;
}
void imSave(const std::string path){
mln::io::pgm::save(working_img, path);
}
您如何看待这个?