Sistem pemrosesan gambar LUA terutama dimaksudkan untuk digunakan dengan Embarcadero C ++/Delphi pada platform Windows. Itu terdiri dari:

Ini adalah inti dari proyek ini. Ini ditulis dalam Embarcadero C ++, tetapi dapat dengan mudah dimodifikasi untuk kompiler lain. Ini menggunakan mesin Luajit dan FFI untuk meneruskan struktur gambar ke skrip LUA. Juga, ia memanggil ocvwrapper.dll untuk menerapkan serangkaian filter OpenCV terbatas dari skrip LUA. Untuk menggunakan DLL ini dari Delphi, entri DLL yang dijelaskan di Lipsenginedll.h harus dikonversi ke file PAS, serta struktur dan typedef di Lipsglobals.h.
Lips Engine saat ini mendukung gambar RGB24 dan gambar saluran 8-bit (GRAYSCALE) tunggal. Dapat berupa TbitMap atau segala jenis wadah gambar dengan buffer memori yang berdekatan. Hanya lebar, tinggi, penyelarasan pemindaian dan pointer ke buffer gambar yang diteruskan ke mesin bibir. Juga, Lips Engine mendukung gambar RGB24 dengan saluran alpha terpisah, seperti gambar tiebitmap (produk komersial) yang tersedia di www.imageen.com. Dukungan untuk RGBA32 juga dapat ditambahkan, tetapi saat ini tidak didukung.
DLL ini ditulis dalam VS2017, karena BCC Compiler tidak didukung oleh OpenCV. Ini berisi panggilan API untuk mengatur sumber/gambar target, untuk mengatur wilayah intereset dan serangkaian filter opencv dan rutinitas pemrosesan gambar terbatas. Karena DLL ini dipanggil dari Lipsengine, setelah menyusun dan menghubungkan ocvwrapper.dll, perpustakaan impor harus dibuat:
Perpustakaan impor harus disalin di folder OpenCV di bawah direktori LipsEngine.
Aplikasi host (demo) ditulis dalam Embarcadero C ++ dan berisi beberapa komponen komersial. Kode sumber dapat dimodifikasi untuk menggunakan komponen standar. Dari kode sumber, Anda dapat melihat cara menggunakan API LipsEngine dan cara menguraikan parameter yang diminta dari skrip LUA.
Baris pertama dalam setiap skrip LUA yang dimaksudkan untuk digunakan dengan mesin bibir harus dimulai dengan pernyataan require("_prolog") . Pengecualian dari aturan ini adalah jika Anda ingin men -debug skrip LUA Anda dengan katakanlah Zerobrane Studio (https://studio.zerobrane.com). Dalam hal ini, pernyataan pertama harus require("_debug") . Untuk menghubungi OpenCV API (ocvwrapper.dll), Anda juga harus menyertakan skrip Opencv require("_opencv") .
Saat skrip dimuat, mesin LUA membuat variabel global berikut:
Lips Engine menggunakan pembungkus luna sebagai pengikatan C ++ (kode sumber termasuk) dan satu set fungsi panggilan balik untuk berkomunikasi dengan aplikasi host. Untuk mengatur parameter dari aplikasi host, skrip harus mendeklarasikan fungsi PersyaratanParams dan hubungi lips_RequireParams(S) yang terkandung dalam skrip prolog untuk menginstruksikan host untuk mengatur parameter yang diperlukan. Struktur string permintaan parameter yang diteruskan ke host harus mengikuti aturan produksi ini:
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);"
Contoh dari Opencv Gaborius.lua Script:
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
Parameter pertama (langkah) adalah tipe int dan berkisar dari 1 hingga 32 dengan nilai awal 16. Parameter ketiga (Sigma) adalah tipe float dan berkisar dari 0,1 hingga 10 dengan nilai awal 4.0. Aplikasi host, setelah parsing dan memvalidasi string parameter yang diperlukan akan membuat berbagai frame dan memungkinkan pengguna untuk menyesuaikan parameter. Ketika skrip dieksekusi, nilai parameter didorong ke stack dan variabel LUA global dibuat sesuai dengan nama parameter.
Semua skrip LUA yang diperlukan serta contoh skrip juga didistribusikan dengan paket biner.
Catatan: File data_face.zip berisi deteksi wajah dan model landmark wajah. data_stylemodels.zip berisi model transfer gaya saraf. Arsip -arsip ini harus dibongkar dalam folder data/(wajah | stylemodels) di bawah jalur direktori yang dapat dieksekusi jika Anda tidak ingin memodifikasi skrip contoh opencv (swap wajah, transfer gaya saraf).
Berikut adalah beberapa tangkapan layar aplikasi host setelah menjalankan berbagai skrip LUA:





© Siniša Petrić, www.sigmapi-design.com, lisensi MIT.