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,麻省理工學院許可證。