Какие изменения следует внести в код, созданный для API обработки изображений в прологе - PullRequest
0 голосов
/ 29 октября 2019

Я пытался создать API обработки изображений для вызова функций библиотеки 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).

Я ожидаю удалить ошибку из кода, и любые другие рекомендации окажут большую помощь.

...