Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/299.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
呼叫C++;通过引用来自Python的函数 我已经成功地用SWIG包装了C++代码,并将其加载到Python中。我在用电脑_C++_Python_Swig - Fatal编程技术网

呼叫C++;通过引用来自Python的函数 我已经成功地用SWIG包装了C++代码,并将其加载到Python中。我在用电脑

呼叫C++;通过引用来自Python的函数 我已经成功地用SWIG包装了C++代码,并将其加载到Python中。我在用电脑,c++,python,swig,C++,Python,Swig,但是,我不知道如何调用需要指向图像的指针的函数 例如,我的侵蚀图像的函数原型如下: mln::image2d<mln::value::int_u8> imErossion( const mln::image2d<mln::value::int_u8> *img, int size, int nbh ); 我和我大学的教授商量过了,我们决定最好实现一个函数,当这个函数被加载并声明为全局时,该函数将返回指向图像的指针: mln::image2d<mln::va

但是,我不知道如何调用需要指向图像的指针的函数

例如,我的侵蚀图像的函数原型如下:

mln::image2d<mln::value::int_u8> imErossion(
    const mln::image2d<mln::value::int_u8> *img, int size, int nbh
);

我和我大学的教授商量过了,我们决定最好实现一个函数,当这个函数被加载并声明为全局时,该函数将返回指向图像的指针:

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);

}
mln::image2d工作模式;
mln::image2d*imLoad(常量std::字符串路径){
mln::io::pgm::load(工作模式,路径);
返回和工作模式;
}
void imSave(常量std::字符串路径){
mln::io::pgm::save(工作模式,路径);
}

>你觉得这是什么?

我写了一个C++绑定库,叫做LigMeEaGo,它的目的与Sigg类似。我不能说你是如何做的是最佳实践,但你在这个答案中提出的解决方案是我已经做过的,而且我个人还没有遇到问题。我编写了LeimEaMo来自动处理大多数类型转换案例,但是也有一些情况使得库处理它不方便,然后我只在C++中编写一个帮助函数。这个程序将通过一个带有HTML前端的Apache服务器来为多个用户使用。但是我认为,当我们为每个请求创建一个新的流程时,定义一个全局变量是可以的,我不应该担心“真正的并发性”
eroded_ima = imErossion(&ima,1,8)
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);

}