我正在寻找一个系统,我可以在其中使用 Prolog 调用 Cool Image 库函数(这是一个用于图像处理任务的 C 语言库)。
CoolImage 库中有一些函数,例如调整图像大小、创建蒙版等。所以我不想对这些函数进行任何更改,只是通过使用 Prolog 我可以调用它们并进一步使用它来构建 WIN32 API。
如果有人能就这一点指导我,即我应该参考的任何参考或任何实施方式,我将不胜感激。
我正在寻找一个系统,我可以在其中使用 Prolog 调用 Cool Image 库函数(这是一个用于图像处理任务的 C 语言库)。
CoolImage 库中有一些函数,例如调整图像大小、创建蒙版等。所以我不想对这些函数进行任何更改,只是通过使用 Prolog 我可以调用它们并进一步使用它来构建 WIN32 API。
如果有人能就这一点指导我,即我应该参考的任何参考或任何实施方式,我将不胜感激。
我已经将一个简单的界面示例上传到github ,当作为参数传递给程序时,它运行CImg 文档(参见example.pl )中的第一个示例。
它展示了如何创建对象并定义作用于这些对象的方法。看看代码做了什么,并随时提出问题。
编辑:
更新了用于接口谓词的 git repo 引入模块。CImg
现在,类的暴露成员CImgDisplay
必须分别以cImg
,为前缀cImgDisplay
,并且构造函数/析构函数被命名为new
, delete
。
文件 example.pl 已移至examples/getting_started.pl,它显示了如何获取相对于源定位的图像:
...
module_property(getting_started,file(ModuleFile)),
file_directory_name(ModuleFile,ModuleDir),
directory_file_path(ModuleDir,'img/milla.bmp',Milla),
cImg:new(Milla,Image),
cImg:blur(Image,2.5),
编辑:当你发现你需要调用一个尚未实现的成员时,你应该将它添加到你的 swipl_cimg.cpp 中,在适当的部分(我的意思是,你看到#define PROLOG_MODULE className...
与你需要的对象相对应的地方),取消引用对象(s ) 使用强制转换函数并调用 c++ 方法。这是一个冗长而无聊的方式,对不起,但我不知道更好的......要涵盖完整的 CImg 库,需要做很多工作。因此,尝试实施 - 并仔细测试 - 只需要什么......
遵循一些约定很有用:首先输入参数,最后输出。