Analýzu obrazů v systému VisionLab
skládáme z jednotlivých kroků. Kroky se liší funkčností a také typy a
počty vstupních a výstupních parametrů. Právě jednotlivé kroky pro
zpracování obrazu tvoří jádro systému VisionLab. Tvůrce aplikace kroky vybírá z palety nabízených
kroků a sestavuje je do sekvence podle potřeb aplikace.
V rámci zpracování sekvence kroků může být v některých případech
nezbytné provádět pomocné výpočty. V Control Webu 9 můžeme do
zpracování obrazu vložit nový krok program.
V tomto kroku je možné zapsat uživatelský algoritmus, který pracuje
s datovými objekty. Zápis programu je podobný se zápisem kódu v
systému Control Web (např. tělo procedury). V kódu
kroku program je možné přiřazovat výsledek výrazu do datového
objektu, provádět cykly (while, repeat,
for) nebo podmínky (if, switch),
případně volat pomocné funkce (sin, cos,
trim, str ...).
Pokud v grafickém editoru systému VisionLab vybereme krok program, zobrazí
VisionLab textový editor, kde můžeme zapsat
algoritmus.
V programu je možné pracovat se všemi datovými objekty, které jsou
k dispozici (definované v sekci init_data a výsledky
předchozích kroků).
Výrazy s datovými objekty
Protože každý datový objekt je pole určitého počtu prvků
stejného typu, nepracují výrazy se skalární hodnotou jako
v systému Control Web, ale s celým polem. Je tedy
například možné sečíst dvě pole, výsledkem bude pole součtů
jednotlivých prvků. Pokud je některé pole menší, poslední prvek
pole se zopakuje. Výsledné pole je potom vždy tak velké, jak je
velké největší pole ve výrazu. Pokud například vynásobíme pole
konstantou, bere se konstanta jako pole o velikosti jedna,
výsledkem bude pole v němž budou všechny prvky vynásobené danou
konstantou.
Ukážeme si několik příkladů:
- pole souřadnic x bodu
point_1.x
- souřadnice x prvního bodu
point_1[1].x
- posun všech bodů v poli
point_1.x = point_1.x + 100
Příkazy programu
V programu je možné používat následující
příkazy: Přiřazení | point_1[3].x = 125; | Podmínka if else | if point_1.x < 0 then
di = 1;
else
di = -1;
end; | Podmínka switch | switch ErrorCode of
case 0:
ErrorMsg = 'Objekt nenalezen';
case 1:
ErrorMsg = 'Objekt mimo oblast';
case 2:
ErrorMsg = 'Chybná velikost objektu';
else
ErrorMsg = 'Neznámá chyba';
end; | Cyklus loop | loop
a = b + c;
if a > 123 then
exit;
end;
i = i + 1;
if i > 100 then
exit;
end;
j = i;
end; | Cyklus while | i = 0;
while i < 10 do
a = a + c;
i = i + 1;
end; | Cyklus repeat until | repeat
a = a + b;
i = i + 1;
until i > 10; | Cyklus for | for i = 1 to 10 do
point_1[i].x = i*100;
end |
|