LUA图像处理系统主要打算与Windows平台上的Embarcadero C ++/Delphi一起使用。它由:

这是项目的核心。它是用Embarcadero C ++编写的,但可以为其他编译器进行修改。它使用Luajit引擎和FFI将图像结构传递给LUA脚本。另外,它调用ocvwrapper.dll应用LUA脚本中的一组有限的OPENCV过滤器。要使用Delphi的DLL,必须将LipSenginedll中描述的DLL条目转换为PAS文件,以及LipsGlobals.H中的结构和Typedefs。
Lips Engine目前支持RGB24图像和单个通道8位(灰度)图像。它可以是tbitmap或具有连续内存缓冲区的任何类型的图像容器。只有宽度,高度,扫描线对准和指向图像缓冲液指针才传递给Lips发动机。此外,Lips Engine还支持带有分离的Alpha频道的RGB24图像,例如www.imageen.com上可用的tiebitmap图像(商业产品)。也可以添加对RGBA32的支持,但目前不支持。
该DLL写在VS2017中,因为OpenCV不支持BCC编译器。它包含用于设置源/目标图像的API调用,用于设置集团的设置区域以及一组有限的OPENCV过滤器和图像处理程序。正如该DLL从Lipsengine调用的那样,在编译和链接ocvwrapper.dll之后,必须创建导入库:
必须在LIPSEngine目录下的OpenCV文件夹中复制导入库。
主机(演示)应用程序用Embarcadero C ++编写,其中包含一些商业组件。可以修改源代码以使用标准组件。从源代码中,您可以查看如何使用LipsEngine API以及如何从LUA脚本中要求的参数。
每个旨在与Lips发动机一起使用的LUA脚本中的第一行必须以require("_prolog")语句开始。此规则的例外是,如果您想用Zerobrane Studio(https://studio.zerobrane.com)进行调试LUA脚本。在这种情况下,必须require("_debug") 。要调用OpenCV API(ocvwrapper.dll),您还必须包括OpenCV脚本require("_opencv") 。
加载脚本时,LUA引擎会以全局变量创建:
Lips Engine使用Luna包装器作为C ++绑定(包括源代码)和一组呼叫函数来与主机应用程序进行通信。要从主机应用程序设置参数,脚本必须声明Prolog Script中包含的需要eparams函数,并调用lips_RequireParams(S) ,以指示主机设置所需参数。传递给主机的参数请求字符串的结构必须遵循以下规则:
S -> A
A -> A | token
token -> "name = type(range initial_value);"
type -> int | float | bool | combo | list | imagefile | imagemap
range -> [min, max] | [v1, v2,...,vn] | []
initial_value -> according to type, must be in the range (if range is not empty)
Parameters request example: S = "size = int([10,20] 10);"
Parameters request example: S = "perform_something = bool([] true);"
opencv gaborius.lua脚本的示例:
function RequireParams()
lips_RequireParams("step = int([1, 32] 16); kernel_size = int([3, 101] 31);"
.. " sigma = float([0.1, 10] 4.0); lambda = float([1, 30] 10);"
.. " gamma = float([0.1, 10] 0.2); psi = float([0, 1.57] 0); ks_factor = float([0.001, 10] 1.5); ")
end
第一个参数(步骤)为int类型,范围从1到32,初始值16。第三个参数(Sigma)为float类型,范围从0.1到10,初始值4.0。解析和验证所需参数后,主机应用程序将创建各种帧,并允许用户调整参数。执行脚本后,将参数值推到堆栈上,并根据参数名称创建全局LUA变量。
所有必需的LUA脚本以及示例脚本都与二进制软件包一起分发。
注意:data_face.zip文件包含面部检测和面部标记模型。 data_stymodels.zip包含神经样式转移模型。如果您不想修改OPENCV示例脚本(face交换,神经样式传输),则必须在数据/(face | Stylemodels)文件夹中解开这些档案。
执行各种LUA脚本后,这里有几个主机应用程序的屏幕截图:





©SinišaPetrić,www.sigmapi-design.com,麻省理工学院许可证。