在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个图像,包括模型编译和初始化。
模型描述
当改变掩模参数时,块前侧的图像被更新。 图像也被放置在块代码中,如果模型被移动或原始图像文件被移动或删除,则不会被擦除。
让我们通过软件控制机制运行模型:
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]:
将生成的图像保存到文件中。
In [ ]:
save( "out.png", pic )
正如预期的那样,我们反转了红色通道中的值,删除了透明度通道,并显示了图像。
结论
Engee使机器视觉算法的原型设计相对容易,同时保持图形编程所执行操作的层次结构和逻辑清晰度。
