Engee 文档
Notebook

在Engee中处理图像

让我们介绍一种设计图像处理算法的方法,允许您将图像加载到Engee画布上的组件中并处理各种颜色通道。

例的目的

图形设计环境允许您实现非常高的开发速度。 虽然全面的图形开发需要一个设计师应该能够理解的大型组件库,但这种方法避免了编码错误,并且通常均衡了专业程序员和其他应用科学领域专家的能力。

任务说明

在这个例子中,我们将展示如何将图像加载到画布上的组件中,并反转其中一个通道。 输入图像文件的名称应作为参数给出。 Название файла 街区 Изображение. 假设图像具有4个通道。

如果源图像中没有Alpha通道(透明度通道),则模型输出由255个值组成的矩阵。

图像大小警告

在处理大图像时,将图像保存在块内的方法不是很有效。 如果您将矩阵以文本形式存储在块代码中,则可能会发生这种情况。

我们建议在小图像(侧面小于200像素)上调试算法。 最有可能的是,对于大图像的良好处理,它们需要以格式放置在组件代码中 char* 并使用其他C/C++库"解压缩"。

源图像为300×300,模型编译62秒,初始化49秒,运行0.36秒(共110秒)。

使用200x200的源映像,模型编译18秒,初始化25秒,运行0.32秒(共43秒)。

在不到10秒的时间内处理100*100个图像,包括模型编译和初始化。

模型描述

当改变掩模参数时,块前侧的图像被更新。 图像也被放置在块代码中,如果模型被移动或原始图像文件被移动或删除,则不会被擦除。

image.png

让我们通过软件控制机制运行模型:

In [ ]:
model_name = "picture_read_model";
model_name in [m.name for m in engee.get_all_models()] ? engee.open(model_name) : engee.load( "$(@__DIR__)/$(model_name).engee");
res = engee.run( model_name );

您可以通过访问函数来检查转换后的图像 RGBA 图书馆 Images.jl

In [ ]:
pic = RGBA.( collect(res["out_R"])[end,end]./255,
       collect(res["out_G"])[end,end]./255,
       collect(res["out_B"])[end,end]./255,
       collect(res["out_A"])[end,end]./255 )
Out[0]:
No description has been provided for this image

将生成的图像保存到文件中。

In [ ]:
save( "out.png", pic )

正如预期的那样,我们反转了红色通道中的值,删除了透明度通道,并显示了图像。

结论

Engee使机器视觉算法的原型设计相对容易,同时保持图形编程所执行操作的层次结构和逻辑清晰度。

示例中使用的块