首页 > 解决方案 > prolog中为图像处理API构建的代码应该做哪些更改

问题描述

我一直在尝试构建一个图像处理 API 来使用 prolog 调用 CImg 库函数。但是我在代码中收到有关运算符和模块的错误。

我看到一些参考文献提到可以通过插入句点(。)符号来消除此错误,但结果没有显示任何改进。


:- module(getting_started, []).
:- use_module(library(filesex)).

:- initialization.example.

example:-

    module_property(getting_started,file(ModuleFile)),
    file_directory_name(ModuleFile,ModuleDir),
    directory_file_path(ModuleDir, 'img/milla.bmp', Milla),

    cImg:new(Milla,Image),
    cImg:new(500,400,1,3,0,Visu),

    cImg:blur(Image,2.5),

    cImgDisplay:new(Image,"Click a point",Main_disp),
    cImgDisplay:new(Visu,"Intensity profile",Draw_disp),

    loop(Image,Visu,Main_disp,Draw_disp).

loop(_,_,Main_disp,Draw_disp) :-
    ( cImgDisplay:is_closed(Main_disp) ; cImgDisplay:is_closed(Draw_disp) ), !.

loop(Image,Visu,Main_disp,Draw_disp) :-
    cImgDisplay:wait(Main_disp),
    (   cImgDisplay:button(Main_disp,1)
    ->  cImgDisplay:mouse_y(Main_disp,Y),
        (   Y >= 0
        ->  cImg:width(Image,W), W1 is W-1,
            Red = [ 255,0,0 ], Green = [ 0,255,0 ], Blue = [ 0,0,255 ],
            cImg:get_crop(Image,[0,Y,0,0,W1,Y,0,0],CropR),
            cImg:get_crop(Image,[0,Y,0,1,W1,Y,0,1],CropG),
            cImg:get_crop(Image,[0,Y,0,2,W1,Y,0,2],CropB),

            cImg:fill(Visu,0),
            cImg:draw_graph(Visu,CropR,Red,1,1,0,255,0),
            cImg:draw_graph(Visu,CropG,Green,1,1,0,255,0),
            cImg:draw_graph(Visu,CropB,Blue,1,1,0,255,0),
            cImg:display(Visu,Draw_disp),

            cImg:delete(CropR),
            cImg:delete(CropG),
            cImg:delete(CropB)

        ;   true
        )
    ;   true
    ),
    !, loop(Image,Visu,Main_disp,Draw_disp).

我希望从代码中删除错误,任何其他指导都会有很大帮助。

标签: image-processingprologsyntax-errorswi-prolog

解决方案


推荐阅读