SmartVision SDK 2 – uživatelský manuál

Transkript

SmartVision SDK 2 – uživatelský manuál
SmartVision SDK 2 – uživatelský manuál
Uživatelský manuál
Revize manuálu: 2.0
Kompatibilita s verzí SmartVision: 2.0.0 a vyšší
Datum uvolnění revize: 14.7. 2013
Workswell s.r.o. | SmartVision SDK 2
1
SmartVision SDK 2 – uživatelský manuál
Úvod
SmartVision SDK je sada vývojových nástrojů pro implementaci videoaplikací. Obsahuje širokou sadu
ovladačů (SmartVision Runtime Package), dll videoknihovnu (SmartVision library) a testovací aplikaci
(TestApp).
Knihovna SmartVision library je univerzální DLL knihovna pro získání videoobrazu, implementaci a
návrh obrazových algoritmů. Knihovna podporuje připojení na protokoly GigE, USB 2.0, USB 3.0, Fast
Ethernet MJPEG, IEEE 1394 Firewire od více jak 47 výrobců kamer a videohardwaru.
Využitím formátu DLL je možné tuto knihovnu využít v programovacím jazyce C, C++, C#, Java, Visual
Basic, Matlab, Labview a všech prostředích podporujících import DLL funkcí.
Díky snadnému rozhraní je možné přistupovat k příslušnému kamerovému systému vždy stejným
principem a získat kompletní kontrolu nad používaným videohardwarem. Vývojář tak může použít
jednu knihovnu pro návrh aplikací s odlišnými videorozhraními od protokolu GigE až po USB.
SmartVision library obsahuje také pomocné aplikace pro efektivní průzkum připojeného
videohardwaru. Aplikace CameraExplorer dovoluje uživateli zobrazit připojený videohardware a
vypsat všechny čtecí a zápisové parametry videosystému. Pomocí sady GET a SET funkcí je možné
plně ovládat a nastavovat videohardware. Otevření a ukončení videostreamu je díky funkci
OpenSession a CloseSession velmi jednoduché a rychlé. Zobrazení aktuálního obrazu je umožněno jak
pomocí již předpřipraveného videookna, tak i pomocí čtení z matice RAW či RGB (paletových) dat
z příslušného videobufferu. Obraz lze zaznamenat také jednoduše pomocí vyfocení aktuální scény
(funkce MakeSnap) či přímo pomocí reference přistupovat na blok dat ve videopaměti a tím
dosáhnout maximální obnovovací frekvence obrazové informace z kamerového systému. Oranžové
bloky níže ukazují vrstvový (nedynamický) model vývojové sady SmartVision SDK.
Testovací aplikace TestApp SmartVision
Vývojové prostředí IDE pro vývoj koncové
aplikace (C#, C/C++, Matlab, Labview, atd.)
SmartVision library (sada DLL funkcí pro
ovládání a zpracování obrazu
z videohardwaru)
Operační systém Windows (XP, Vista, 7 - 32bit a 64bit)
SmartVision Runtime Package (sada ovladačů a přímý přístup na videohardware)
Videohardware a kamery (Ethenet, USB, PCI)
2
Univerzální DLL videoknihovna| Workswell s.r.o.
SmartVision SDK 2 – uživatelský manuál
SmartVision SDK 2- uživatelský manuál
Workswell s.r.o. | SmartVision SDK 2
3
SmartVision SDK 2 – uživatelský manuál
Vyvázání se že záruky
Všechny výrobky (software, hardware či firmware) společnosti Workswell s.r.o. mají záruku proti výrobním vadám po dobu
dvou let. Tuto záruku lze uplatnit pouze, pokud byl výrobek skladován a používán podle pokynů uvedených v příslušné
příručce.
Záruka se vztahuje pouze na původního kupce a je nepřenositelná. Záruku nelze uplatnit na výrobek, který byl nesprávně
používán, neudržován, poškozen nebo provozován při podmínkách, které manuál nestanovuje jako podmínku provozní.
Jestliže dojde k poškození výrobku, který je kryt zárukou, výrobek nesmí být dále používán, aby se zabránilo dalšímu
poškození. Zákazník musí neprodleně oznámit tuto závadu společnosti Workswell nebo jím autorizovanému distributorovi,
jinak nebude možné záruku uplatnit.
Společnost Workswell zdarma opraví nebo vymění každý vadný výrobek, jestliže bude na základě odborné prohlídky
prokázána u výrobku vada materiálu či výrobku a jestliže bude tento výrobek vrácen společnosti Workswell v záruční době,
tj. do dvou let od data nákupu.
Výrobek nesmí být společnost Workswell otevírán nebo upravován.
Společnost Workswell nenese odpovědnost za vady výrobku kromě výše uvedených a neposkytuje na ně záruku. Žádná další
záruka není vyjádřena ani předpokládána. Společnost Workswell nenese odpovědnost za neodborné použití výrobku ani za
škody způsobené nesprávnou činností, instalací či funkcí výrobku třetím stranám či samotnému uživateli.
Autorská práva
© Workswell s.r.o. Všechna práva celosvětově vyhrazena. Bez předchozího písemného souhlasu společnosti Workswell
s.r.o. nesmí být žádná část software či hardware včetně zdrojového kódu a zdrojových souborů reprodukována, přenášena,
přepisována nebo překládána do jakéhokoli umělého či přirozeného jazyka, pokud není výsledně uvedeno jinak.
Názvy a značky uvedené na výrobcích v této příručce jsou registrovanými ochrannými známkami nebo ochrannými
známkami společnosti Workswell s.r.o. Všechny ostatní ochranné známky nebo názvy společností zmíněné v této příručce a
manuálu se používají pouze pro identifikaci a jsou majetkem jejich příslušných vlastníků.
4
Univerzální DLL videoknihovna| Workswell s.r.o.
SmartVision SDK 2 – uživatelský manuál
Workswell s.r.o. | SmartVision SDK 2
5
SmartVision SDK 2 – uživatelský manuál
Obsah
Úvod ........................................................................................................................................................ 1
Obsah....................................................................................................................................................... 6
Varování a upozornění ............................................................................................................................ 7
Obsah standardního dodání .................................................................................................................... 8
Informace pro uživatele .......................................................................................................................... 9
Nápověda a dotazy ................................................................................................................................ 10
Požadavky na hardware PC ................................................................................................................... 11
Aktualizace a kompatibilita ................................................................................................................... 12
Licenční systém SmartVision ................................................................................................................. 18
Instalace SmartVision SDK ..................................................................................................................... 24
Spouštění TRIAL verze ........................................................................................................................... 30
Popis balíku SmartVision SDK ................................................................................................................ 31
SmartVision library DLL funkce.............................................................................................................. 33
Tutoriál pro vývoj v jazyce C# ................................................................................................................ 53
6
Univerzální DLL videoknihovna| Workswell s.r.o.
SmartVision SDK 2 – uživatelský manuál
1
Varování a upozornění
Varování
Před použitím výrobku zkontrolujte, zda nejeví viditelné známky poškození či
nesprávné funkce. Pokud je zařízení poškozené či jinak vadné, nepoužívejte jej.
Upozornění
Nepoužívejte a neskladujte zařízení v rozporu se skladovacími a provozními
podmínkami stanovenými v této příručce (týká se jen hardware).
Jakékoliv zásahy a necertifikované servisní úkony do výrobku vedou
k automatické ztrátě záruky
Workswell s.r.o. | SmartVision SDK 2
7
SmartVision SDK 2 – uživatelský manuál
2
CD
Obsah standardního dodání
Součástí standardního zakoupeného CD SmartVision SDK (netýká se papírové
licence) jsou tyto části:




Sada ovladačů SmartVision Runtime Package
DLL knihovna SmartVision library
Testovací aplikace a tutorial TestApp
Příručka SmartVision SDK - Uživatelský manuál.
SmartVision
Runtime
Package
Součástí standardního dodání je samoinstalační aplikace SmartVision Runtime
Package, která obsahuje ovladače na kompatibilní videohardware. Tato aplikace
nainstaluje na příslušný počítač sadu driverů pro videohardware a kamery. Některé
z těchto ovladačů využívají také sadu MAX od společnosti National Instruments a
dalších společností. Společnost Workswell s.r.o. plně uznává veškeré licenční
ujednání se společností National Instruments a veškeré poplatky za užívání tohoto
modulu ve svém vývojovém nástroji SmartVision SDK.
Dokumentace
S výrobkem SmartVision SDK je dodáván Uživatelský manuál (tj. dokument, který
právě čtete), který je uložen na oficiálním CD.
8
Univerzální DLL videoknihovna| Workswell s.r.o.
SmartVision SDK 2 – uživatelský manuál
3
Informace pro uživatele
Typografické
konvence
V této příručce se používají následující typografické konvence:




VELKÁ PÍSMENA se používají pro názvy kláves, tlačítek a položek menu,
COURIER se používá pro ukázky zdrojových kódů, názvy souborů a
souborové cesty,
kurzíva se používá pro důležité informace a názvy dokumentů,
tučné písmo je použito při odkazu na jinou kapitolu, názvy funkcí či
internetové odkazy
Nápověda a
uživatelské
fórum
S technickými dotazy, na které vám nepomohla najít odpověď tato příručka, se
obraťte na svého prodejce, nebo přímo na stránky produktu na internetové
adrese http://www.workswell.cz, kde nejprve vyhledejte odpověď v
uživatelském fóru a pokud odpověď na svůj dotaz nenaleznete, zašlete dotaz na
email [email protected]
Aktualizace
Prioritním cílem společnosti Workswell je dodávat své výrobky v takové podobě,
aby splňovala aktuální potřeby svých uživatelů a zároveň, aby byly co nejrychleji
odstraněny všechny nedostatky, které byly při jejich užívání nalezeny. Z tohoto
důvodu společnost Workswell ve všech svých výrobcích pravidelně uvolňuje
aktualizace. Více informací naleznete v kapitole Aktualizace a kompatibilita.
Firmware
Firmware je „interní“ řídicí program zařízení. Z uživatelského pohledu je
podstatná pouze aktuální verze firmware, která je nahrána v právě používaném
zařízení a videohardwaru.
Workswell s.r.o. | SmartVision SDK 2
9
SmartVision SDK 2 – uživatelský manuál
4
Nápověda a dotazy
Obecný postup
Při hledání odpovědi na technický problém doporučujeme dodržovat následující
postup:




10
pokuste se nalézt odpověď v této příručce,
obraťte se na svého prodejce zařízení,
prostudujte stránky společnosti Workswell s.r.o. na adrese
http://www.workswell.cz,
či napište na email [email protected].
Univerzální DLL videoknihovna| Workswell s.r.o.
SmartVision SDK 2 – uživatelský manuál
5
Požadavky na hardware PC
Verze
operačního
systému
SmartVision SDK byl testován pro 32 a 64 bitové verze operačního systému
Windows následujících verzí:





Windows XP
Windows 7 32bit
Windows 7 64bit
Windows 8 32bit
Windows 8 64bit
Na jiných verzích operačního systému Windows nebyl SmartVision SDK testován
a společnost Workswell nezaručuje na těchto verzích Windows správnou nebo
optimalizovanou funkci jednotlivých částí.
V případě, že používáte Windows XP SP2 resp. Windows 7, je nutná aktualizace na
vyšší verzi Windows XP SP3 resp. Windows Vista SP1 před zahájením instalace
jednotlivých částí SmartVision SDK. Jako prerekvizity a správné používání DLL
videoknihovny SmartVision library je potřeba do operačního systému
doinstalovat:



Konfigurace PC
.NET Framework 3.5 a vyšší (ve Windows 7 je již nainstalován)
SmartVision Runtime Package (součástí SmartVision SDK)
A nastavit videohardware dle příslušného protokolu pro kamerový systém
Minimální konfigurace pro SmartVision SDK na operační systém Windows 7 je
následující:






Procesor Intel: min. 2 GHz
paměť: min. 2 GB RAM,
pevný disk: min. 100 GB,
Gigabitový Ethernetový port s řadičem Intel podporující Jumboframe min.
9kB,
klávesnice a myš,
grafický adaptér a monitor s odpovídajícím rozlišením.
Workswell s.r.o. | SmartVision SDK 2
11
SmartVision SDK 2 – uživatelský manuál
6
Aktualizace
SmartVision
SDK
Aktualizace a kompatibilita
Nejnovější verze SmartVision SDK ,tj. jak SmartVision Runtime Package, tak
videoknihovny SmartVision library ale i příslušných tetovacích aplikací naleznete na
webových stránkách www.workswell.cz , kde je umístěna nejnovější verze těchto
částí. Vzhledem k požadavku, na co nejrychlejší úpravu a opravu knihovny si
společnost Workswell, vyhrazuje právo na zasílání upozornění na nejnovější update
SmartVision SDK na uživatelský email zákazníka. Výrazně však doporučujeme
pravidelně kontrolovat nejnovější verze SmartVision Runtime Package a SmartVision
library.
V případě použití nových verzí stačí jednoduše přeinstalovat příslušnou stávající
SmartVision library. Vždy však doporučujeme, aby zákazník stahoval současně, jak
SmartVision Runtime Package tak také SmartVision library pro bezproblémový chod
nových i stávajících funkcí na příslušném videohardwaru (průběžné aktualizace
driverů a opravy problematického chování).
Kompatibilni
SmartVision library pomocí modulu SmartVision Runtime Package umí přistupovat
videohardware k několika stovkám druhů videohardwaru, ať už se jedná o kamery, termokamery či
a zdroje videa videograbbery. Základem je obsáhlá databáze ovladačů pro snadné napojení
videohardwaru, ať s nutností či bez příslušného videograbberu. Uživatel tak není
nucen instalovat jiné ovladače a může se věnovat samostatnému zpracování
videodat. Mezi podporované protokoly patří:
1) Paralelní digitální rozhraní s příslušným videograbberem
- TTL rozhraní
- RS422
- LVDS
2) Gigabit Ethernet (GigE) protokol s a bez nutnosti videograbberu
3) Fast Ethernet IP protokol s a bez videograbberu
- MJPEG
4) IEEE 1394 Firewire protokol s a bez nutnosti videograbberu
- IIDC (DCAM)
5) USB 2.0 protokol bez nutnosti videograbberu
- DirectShow produkty jako jsou webkamery, mikroskopy, skenery, apod.
6)
USB 3.0 protokol bez nutnosti videograbberu
- AIA USB3 Vision produkty
Všechny výše uvedené rozhraní jsou podporovány s framegrabbery společnosti
National Instruments, popř. s jejími kompatibilními klony pro rozhraní PCI,
PCIexpress. Pro některé druhy rozhraní není nutné dokupovat speciální
videograbbery a lze použít standardní integrované porty v PC, je však nutné zajistit
příslušné parametry videopřenosu, definované v jednotlivých standardech IEEE či
AIA.
Vzhledem k velkému počtu a množství každoročně vyráběných typů zařízení,
12
Univerzální DLL videoknihovna| Workswell s.r.o.
SmartVision SDK 2 – uživatelský manuál
nemůže společnost Workswell s.r.o. garantovat podporu všech výše uvedených
protokolů u všech výrobců. Proto doporučujeme před zakoupením SmartVision SDK
kontaktovat příslušného prodejce SmartVision SDK či technickou podporu
společnosti Workswell ohledně výsledné kompatibility SmartVision SDK a cílového
videohardwaru. Za případné nekompatibility SmartVision SDK a příslušného
videohardwaru či kamery nenese společnost Workswell s.r.o. žádnou zodpovědnost.
Dokumentace
Na oficiálních stránkách společnosti Workswell s.r.o. naleznete všechny příslušné
dokumentační listy, uživatelské manuály či technické informace. Pro technický dotaz
či nápovědu postupujte dle kapitoly Nápověda a dotazy.
Podporovaní
výrobci
Mezi podporované výrobce videohardwaru patří tyto společnosti:
1)
2)
3)
4)
5)
6)
7)
8)
9)
10)
11)
12)
13)
14)
15)
16)
17)
18)
19)
20)
21)
22)
23)
24)
25)
26)
27)
28)
29)
30)
31)
32)
33)
34)
35)
36)
Adimec CCD Cameras
Allied Vision Technologies
Atmel Corporation
Basler Vision Technologies
Baumer Optronic
Cohu Inc.
Costar Imaging
DVC Company
Dalsa
Flir Systems AB
Fairchild Imaging
Flovel Co.
Hamamatsu
Hitachi Kokusai Electronic
Imaging Solutions
Imperx
Indigo Systems
JAI
Jenoptik Optical System
Mikrotron
NET GmbH
National Instruments
PCO AG
Perkin Elmer Optoelectronics
Photonfocus
PixeLINK
Point Gray Research
Prosilica Inc.
Pulnix
QImaging Corporation
Raytheon Commercial Infrared
Redlake MASD Inc.
SVS Vistek
Sentech
Sensors Unlimited
Sensovation AG
Workswell s.r.o. | SmartVision SDK 2
13
SmartVision SDK 2 – uživatelský manuál
37)
38)
39)
40)
41)
42)
43)
44)
45)
46)
47)
Nastavení
operačního
systému pro
připojení ke
GigE kamerám
Silicon Imaging
Smartek
Sony
Takex
The Imaging Source
Toshiba
UNIQ Vision Inc
VDS Vosskuhler
Vieworks
E2v
iSVi
Pro úspěšné připojení ke GiGE kamerám je nutné, aby použitá síťová karta
podporovala tzv. Jumbo Frames. Pro největší kompatibilitu jsou doporučené síťové
karty s chipsetem Intel PRO/1000. Jumbo Frames jsou pakety velké velikosti, které
přenášejí videodata, proto je potřeba je v nastavení síťové karty povolit. Následuje
standardní postup, jak povolit Jumbo Frames v operačním systému Windows 7:
Nejprve je nutné otevřít Network and Sharing Center (Centrum síťových připojení a
sdílení)
Dále otevřít položku Change adapter settings (Změnit nastavení adaptéru)
14
Univerzální DLL videoknihovna| Workswell s.r.o.
SmartVision SDK 2 – uživatelský manuál
Nyní klikneme pravým tlačítkem na síťový adaptér, ke kterému je připojena GiGE
kamera a vybereme Properties (Vlastnosti), v dialogu dále klikneme na tlačítko
Configure... (Konfigurovat...).
Na záložce Advanced (Upřesnit) hledáme položku Jumbo Frame a podle typu
adaptéru ji buď zapneme nebo nastavíme na maximum. Všechny dialogy potvrdíme
tlačítkem OK a Jumbo Frames máme nastaveny.
Workswell s.r.o. | SmartVision SDK 2
15
SmartVision SDK 2 – uživatelský manuál
Pro připojení ke GiGE kamerám je také nutné vypnout bránu Windows Firewall,
která by jinak blokovala komunikaci s kamerou. Otevřeme Control Panel (Ovládací
panely) a vybereme položku System and Security (Systém a zabezpečení) a dále
Windows Firewall (Brána Windows Firewall).
Otevře se okno s nastavením Windows Firewall kde vlevo klikneme na Turn
Windows Firewall on or off (Zapnout nebo vypnout bránu Windows Firewall).
16
Univerzální DLL videoknihovna| Workswell s.r.o.
SmartVision SDK 2 – uživatelský manuál
V dalším okně nastavíme v sekcích Home or work (private) network location settings
(Nastavení umístění domácí nebo pracovní (privátní) sítě) a Public location network
settings (Nastavení umístění veřejné sítě) přepínače na Turn off Windows Firewall
(not recommended) (Vypnout bránu Windows Firewall (nedoporučuje se)).
Tímto je brána Windows Firewall vypnuta a připojení ke GigE kameře by mělo
proběhnout bez problému.
Workswell s.r.o. | SmartVision SDK 2
17
SmartVision SDK 2 – uživatelský manuál
7
Popis
licenčního
systému a
přidělení
licence
Licenční systém SmartVision
Součástí knihovny SmartVision library je také nástroj pro udělení licence pro dané
PC, resp. aplikaci, která využívá knihovny SmartVision library. Lincenční nástroj je
automaticky spuštěn při instalaci knihovny SmartVision library (nutné nejdříve
nainstalovat modul SmartVision Runtime Package). Proto doporučujeme dokončení
procesu licencování již při samotné instalaci knihovny SmartVision library.
V případě budoucích změn v licenci, či zakoupení FULL verze a přechodu z TRIAL
verze je možné spustit licenční systém manuálně. K těmto účelům slouží program
SmartVision Activator. Odkaz na SmartVision Activator je umístěn ve Start nabídce v
cestě "Všechny programy\Workswell SmartVision\".
Podmínkou správného spuštění je nutnost spustit SmartVision Activator s
administrátorskými právy.
Bez aktivace jedné z verzí (tj. FULL či TRIAL) nebude knihovna SmartVision library
funkční. TRIAL verze funguje pouze s aktivním připojením k internetu a je platná po
dobu 7 dní bez omezení.
K aktivaci FULL verze je nutné zakoupit sériové číslo ke knihovně SmartVision library
od společnosti Workswell a zadat ho buď při instalaci, či manuálně přes nástroj
SmartVision Activator. Aktivaci je možné provést, pouze pokud je počítač připojen
k internetu (bez aktivního připojení k internetu nelze provézt úspěšnou aktivaci). Při
zadávání zákaznických informací do formulářů si společnost Workswell vyhrazuje
právo uložit tyto informace na licenčním serveru společnosti a zároveň se zavazuje,
že tyto informace neposkytne třetím stranám a jiným obchodním subjektům.
V následujícím průvodci jsou ukázány správné kroky pro úspěšné přidělení licence:
1) Spuštění licenčního systému pomocí aplikace SmartVision Activator
18
Univerzální DLL videoknihovna| Workswell s.r.o.
SmartVision SDK 2 – uživatelský manuál
2) Volba typu licence – TRIAL či FULL v aplikaci SmartVision Activator
3) Vyplnění informací a sériového čísla pro verzi TRIAL a FULL v aplikaci
SmartVision Activator
Workswell s.r.o. | SmartVision SDK 2
19
SmartVision SDK 2 – uživatelský manuál
4) Odesílání uživatelských informací na licenční server Workswell
5) Úspěšné odeslání žádosti na licenční server Workswell
20
Univerzální DLL videoknihovna| Workswell s.r.o.
SmartVision SDK 2 – uživatelský manuál
6) Zaslání potvrzovacího emailu z licenční serveru Workswell
- Po zaslání žádosti o TRIAL verzi Vám přijde na zadaný email potvrzovací
zpráva, kterou je nutné aktivovat.
7) Úspěšné dokončení instalace a licenčního systému Workswell
- Po potvrzení a odsouhlasení licenčních podmínek a potvrzení serverem se
Vám zobrazí úspěšné dokončení celého procesu.
Workswell s.r.o. | SmartVision SDK 2
21
SmartVision SDK 2 – uživatelský manuál
Deaktivace
platné FULL
licence a
přenos na jiné
PC
Společnost Workswell umožňuje přenos již zakoupené licence knihovny SmartVision
library na jiné PC. Důvodem přenosu může být upgrade či oprava stávajícího PC,
popřípadě možnost implementace videoaplikace na jiném než cílovém PC. K těmto
účelům slouží aplikace SmartVision Deactivator
Pokud budete chtít přenést licenci FULL verze na jiný počítač, je nutné na aktuálním
počítači s instalovaným SmartVision library, kde byla licence aktivována, spustit
deaktivační software SmartVision Deactivator. Tento program je nutné spustit s
administrátorskými právy. Deaktivaci je možné provést pouze pokud je aktuální
počítač připojen k internetu (bez aktivního připojení k internetu nelze úspěšně
provézt deaktivaci). Součástí licenčních podmínek je podmínka, že na každém
počítači využívající DLL funkce z knihovny SmartVision library musí být zakoupena
FULL licence či alespoň aktivní TRIAL verze knihovny. V opačném případě, se
zákazník vystavuje soudnímu řízení.
Na následujícím obrázku je ukázána správná deaktivace systému a postup:
1)
22
Spuštění deaktivačního nástroje a zadání sériového čísla
Univerzální DLL videoknihovna| Workswell s.r.o.
SmartVision SDK 2 – uživatelský manuál
Workswell s.r.o. | SmartVision SDK 2
23
SmartVision SDK 2 – uživatelský manuál
8
Instalace
SmartVision
Runtime
Package
Instalace SmartVision SDK
SmartVision SDK se skládá z několika modulů, z nichž základním je instalace sady
ovladačů pro možnost připojení na videohardware, tedy před samotným
používáním DLL videoknihovny SmartVision library. Tato sada ovladačů je nazývána
SmartVision Runtime Package a nainstaluje na cílovou stanici či PC s operačním
systémem Windows všechny potřebné ovladače (řádově několik stovek driverů pro
co nejširší kompatibilitu s videohardwarem). Seznam podporovaného hardwaru a
zdrojů videosignálu naleznete v kapitole Aktualizace a kompatibilita. SmartVision
SDK díky modulu SmartVision Runtime Package podporuje více než 47 výrobců
videohardwaru a kamer. V následujícím odstavci je popsán bod po bodu instalační
proces SmartVision Runtime Package:
1) Spuštění a extrakce SmartVision Runtime Package samoinstalačního balíku
2) Inicializace instalačního procesu SmartVision Runtime Package
24
Univerzální DLL videoknihovna| Workswell s.r.o.
SmartVision SDK 2 – uživatelský manuál
3) Přehled licencovaných sad ovladačů pro kompatibilní videohardware a
spuštění instalace SmartVision Runtime Package
4) Instalační proces SmartVision Runtime Package
Workswell s.r.o. | SmartVision SDK 2
25
SmartVision SDK 2 – uživatelský manuál
5) Dokončení instalace a restart počítače a opětovné spuštění operačního
systému
-
26
Po instalaci SmartVision Runtime Package prosím proveďte manuální restart
počítače. Během tohoto restartu se propojí a inicializují všechny potřebné
ovladače pro budoucí videohardware a kamery.
Univerzální DLL videoknihovna| Workswell s.r.o.
SmartVision SDK 2 – uživatelský manuál
Instalace
SmartVision
library
Po úspěšné instalaci sady SmartVision Runtime Package je nutné spustit instalaci
DLL knihoven SmartVision library. Díky této instalaci se do operačního systému
nainstalují DLL knihovny pro budoucí vývoj a přístup na kamerový systém a
videohardware, zároveň se prováží tyto DLL knihovny s balíkem SmartVision
Runtime Package.
Průchod instalací popisuje následující průvodce. Na konci této instalace je potřeba
provézt volbu licence. Pro zkušební účely je povoleno využívat 7denní TRIAL verzi,
kde si můžete vyzkoušet chování a vývoj aplikace s knihovnou SmartVision library.
Po celou dobu používání v TRIAL verzi je nutné být připojený k internetu, neboť
během této doby se kontrolují licenční podmínky se serverem společnosti
Workswell. V případě, že uživatel chce využívat DLL funkce pro budoucí aplikaci i
v offline režimu a na dobu neomezenou, je nutné zakoupit SmartVision SDK u
společnosti Workswell a aktivovat FULL verzi. Po zakoupení Vám bude zasláno
sériové číslo, které bude ověřeno přes licenční server a následně povolena trvalá
licence pro daný počítač. Samotná licence a nákup jednoho sériového čísla se váže
vždy a pouze na jeden počítač, na kterém je SmartVision library spuštěno a
využíváno.
1)
Spuštění instalace a extrakce SmartVision library
Workswell s.r.o. | SmartVision SDK 2
27
SmartVision SDK 2 – uživatelský manuál
2) Inicializace instalace SmartVision library
3) Přehled instalačních pluginů, modulů a prvků SmartVision library
28
Univerzální DLL videoknihovna| Workswell s.r.o.
SmartVision SDK 2 – uživatelský manuál
4) Zahájení instalace a správný proces kopírování SmartVision library
5) Dokončení instalace SmartVision library
6) Poinstalační spuštění licenčního systému SmartVision library
- Po dokončení instalace DLL knihovny SmartVision library je potřeba
projít licenčním procesem. Tento proces je automaticky spuštěn po
dokončení instalace SmartVision library. Přesný postup a popis je
popsán v kapitole Licenční systém SmartVision.
Workswell s.r.o. | SmartVision SDK 2
29
SmartVision SDK 2 – uživatelský manuál
9
Spouštění
TRIAL verze
Spouštění TRIAL verze
Pokud je na počítači aktivována TRIAL verze, při každém spuštění knihovny
SmartVision library (nebo aplikace Camera Explorer) se zobrazí vyskakovací okno
ovladačů videohardwaru od společnosti National Instruments oznamující, že balík
ovladačů této společnosti běží také ve zkušební verzi.
Okno je nutné zavřít stisknutím jednoho z tlačítek Evaluate nebo Cancel.
30
Univerzální DLL videoknihovna| Workswell s.r.o.
SmartVision SDK 2 – uživatelský manuál
10
SmartVision
Runtime
Package
Popis balíku SmartVision SDK
Součástí standardního dodání SmartVision SDK je sada ovladačů SmartVision
Runtime Package. Ta obsahuje ovladače na kompatibilní videohardware a kamerový
systém. Tato část zajišťuje kompatibilitu a přímý přístup na velké množství
videohardwaru a jednotné rozhraní pro knihovnu SmartVision library. Kompletní
soupis podporovaného hardwaru naleznete v sekci Aktualizace a kompatibilita.
Některé z těchto ovladačů využívají také sadu MAX od společnosti National
Instruments a dalších společností. Společnost Workswell s.r.o. plně uznává veškeré
licenční ujednání se společností National Instruments a veškeré poplatky za užívání
tohoto modulu ve své knihovně SmartVision library a SmartVision Runtime
Package.
Camera
Explorer
Po úspěšné instalaci SmartVision library se Vám do počítače nainstaluje také
pomocná aplikace Camera Explorer. Tato aplikace slouží k vygenerování seznamu
parametrů z aktuálně připojené kamery a videohardwaru. V tomto textovém
souboru pak uživatel nalezne kompletní sadu XML uzlů, tedy jednotlivých atributů
ve stromu příslušného videohardwaru či kamery.
1) Spuštění aplikace Camera Explorer
- Po otevření aplikace si uživatel může zvolit kameru či dostupný
videohardware, který je kompatibilní s knihovnou SmartVision library.
Workswell s.r.o. | SmartVision SDK 2
31
SmartVision SDK 2 – uživatelský manuál
2) Vygenerování souboru s popisem a seznamem dostupných atributů pro
budoucí využití v DLL funkcích SmartVision library
3) Výsledný textový soubor s popisem a seznamem dostupných atributů pro
budoucí využití v DLL funkcích SmartVision library
SmartVision
library - DLL
knihovny
Hlavní částí SmartVision SDK je instalovaná sada DLL funkcí SmartVision library pro
kompletní ovládání, čtení a přístup na data videohardwaru. Konkrétní cesta k těmto
knihovnám je popsána v souboru README.RTF
Popis jednotlivých funkcí je uveden v kapitole SmartVision library DLL funkce.
32
Univerzální DLL videoknihovna| Workswell s.r.o.
SmartVision SDK 2 – uživatelský manuál
11
SmartVision library DLL funkce
Obecný popis
DLL funkcí a
záznam chyb v
logu
Všechny DLL funkce kromě void funkcí vrací hodnotu Integer = 1, když jsou
úspěšně dokončeny. Pokud však nastala chyba, vrací hodnotu 0 nebo -1 (typicky u
funkcí get) dle typu chyby.
Veškeré tyto chyby jsou zapsány do tzv. error logu, který je možné přečíst
z textového souboru error_log.txt, který je vytvořen ve stejné cestě kde je spuštěná
samotná DLL knihovna SmartVision library.
Spuštění
session a
ukončení
session
SmartVision Library umožňuje pracovat s barevnými (černobílými) kamerami
anebo s termovizními kamerami s rozhraním GiGE. U obou typů je možné
nastavovat libovolné hardwarové atributy kamery. Obraz z barevných kamer lze
filtrovat funkcemi pro softwarovou filtraci obrazu, je možné aplikovat digitální
stabilizaci obrazu, nahrávat záznam apod. V obraze z termovizních kamer je navíc
možné provádět měření teplot a získávat různé statistiky z měřených oblastí. U
termovizních kamer není možné používat funkce pro softwarovou filtraci obrazu.
Pro ovládání barevné kamery je nutné nejprve spustit Session pomocí funkce
OpenSessionCam. V případě termovizní kamery je možné Session spustit pomocí
funkce OpenSessionThermo. Parametrem těchto funkcí je název rozhraní kamery,
který lze zjistit v poli Camera Interface v pomocném programu Camera Explorer.
Otevření Session chvíli trvá a proto je nutné před další prací s kamerou periodicky
provádět polling pomocí funkcí GetSessionStatusCam/GetSessionStatusThermo.
Session se nepodaří spustit, pokud ke kameře již přistupuje jiný proces.
Popis příslušných DLL funkcí:






void OpenSessionCam(char cameraInterface[])
o Otevírá Session k barevné/černobílé kameře
o char cameraInterface[] - string obsahující název rozhraní kamery
získaný pomocí aplikace Camera Explorer
void OpenSessionThermo(char thermoInterface[])
o Otevírá Session k termovizní kameře
o char thermoInterface[] - string obsahující název rozhraní kamery
získaný pomocí aplikace Camera Explorer
void CloseSessionCam()
o Ukončuje Session barevné/černobílé kamery
void CloseSessionThermo()
o Ukončuje Session termovizní kamery
int8_t GetSessionStatusCam()
o Zjišťuje, jestli běží Session barevné/černobílé kamery
o return:
 0 = Session není spuštěná
 1 = Session je spuštěná
int8_t GetSessionStatusThermo()
o Zjišťuje, jestli běží Session termovizní kamery
Workswell s.r.o. | SmartVision SDK 2
33
SmartVision SDK 2 – uživatelský manuál
o
return:


Otevření a
zavření okna s
videem
0 = Session není spuštěná
1 = Session je spuštěná
Po spuštění Session je možné otevřít okno s videem pomocí funkce OpenVideo.
Dále už je možné libovolně volat ostatní funkce z knihovny SmartVision SDK.
Po ukončení práce je nutné zavřít okno s videem funkcí CloseVideo a ukončit
session pomocí funkce CloseSessionCam/CloseSessionThermo. Session je nutné
ukončit před ukončením aplikace, ze které se volá DLL, jinak v paměti zůstane bežící
proces příslušící spuštěné Session.
Popis příslušných DLL funkcí:



void OpenVideo()
o Otevírá okno s videem. Okno je potom nutné zapozicovat na
obrazovce pomocí funkcí ze systémové User32.dll knihovny
void CloseVideo()
o Zavírá okno s videem.
int8_t SetWindowSize(int16_t width, int16_t height)
o Nastavuje velikost okna s videem. Okno je vždy umístěno na pozici
(0,0)
o int16_t width - horizontální velikost okna v px
o int16_t height - vertikální velikost okna v px
o return:
 1 = nastavení úspěšné
 0 = nastavení úspěšné/chyba
Ovládání
Veškeré hardwarové funkce příslušného videohardwaru je možné ovládat pomocí
parametrů
funkcí SetAttribute. Tyto funkce mají jako parametr název XML uzlu, který používá
příslušného
driver GigE rozhraní, případně dalších rozhraní (DirectShow a podobně). V XML
videohardwaru každé kamery jsou uvedeny všechny hardwarové atributy, které je na kameře
možné ovládat. Seznam všech dostupných atributů je možné uložit do textového
souboru programem Camera Explorer, který je součástí SmartVision library.
Uložený textový soubor obsahuje výpis všech atribut ve formátu:
[prvniXMLuzel::druhyXMLuzel::n-tyXMLuzel]
Description = "Popis XML atributy ulozeny v XML kamery"
Type = "Datovy typ" (UINT32, INT64, DBL, String, Enum, Bool,
Command)
Read = TRUE/FALSE (je mozne atribut cist?)
Write = TRUE/FALSE (je mozne atribut zapisovat?)
Min = "Minimalni hodnota rozsahu atributu"
Max = "Maximalni hodnota rozsahu atributu"
Value0 = "Prvni hodnota enumeratoru"
Value1 = "Druha hodnota enumeratoru"
ValueN = "N-ta hodnota enumeratoru"
Popis příslušných DLL funkcí:
34
Univerzální DLL videoknihovna| Workswell s.r.o.
SmartVision SDK 2 – uživatelský manuál

int8_t SetAttribute(char interface[], char activeAttribute[], double
valueDBL, char valueString[])
o Funkce pro nastavování hardwarových atribut kamery
o char interface[] - string obsahující název rozhraní kamery získaný
pomocí aplikace Camera Explorer
o char activeAttribute[] - název XML uzlu vyčtený ze souboru
vygenerovaného pomocí aplikace Camera Explorer (bez složených
závorek, ovšem včetně oddělovacích dvojteček)
o double valueDBL - číselná hodnota atributu. GiGE XML norma
specifikuje tyto datové typy UINT32, INT64, DBL, String, Enum, Bool,
Command. Parametr valueDBL zahrnuje datové typy UINT32, INT64,
DBL, Bool (0 = false, 1 = true) a Command (0 = off, 1 = on). Je nutné
si pohlídat platný rozsah atributu, uložený opět v textovém souboru
vygenerovaném aplikací Camera Explorer.
o char ValueString[] - string hodnota atributu. Zahrnuje datové typy
String a Enum. Pro enumerátory jsou v textovém souboru uloženy
všechny platné hodnoty enumerátoru a tyto se předávají funkci jako
string.
o return:
 1 = nastavení úspěšné
 0 = nastavení úspěšné/chyba
Čtení
Obdobou ovládacích funkcí jsou funkce pro čtení parametrů z videohradwaru
parametrů
GetAttribute, které vyčtou z parametru videohardwaru aktuální hodnotu. Tyto
příslušného
funkce mají jako parametr název XML uzlu, který používá driver GigE rozhraní,
videohardwaru případně dalších rozhraní (DirectShow a podobně). V XML každé kamery jsou
uvedeny všechny hardwarové atributy, které je na kameře možné ovládat. Seznam
všech dostupných atributů je možné uložit do textového souboru programem
Camera Explorer, který je součástí SmartVision library. Rozšířenou verzí funkce
GetAttribute je funkce GetAttributeInfo, která z parametru vyčte doplňkové
informace videohardwaru.
Popis příslušných DLL funkcí:

int8_t GetAttribute(char interface[], char activeAttribute[], double
*valueDBL, char valueString[], Int32 lengthIn)
o Vyčte hodnotu hardwarového atributu kamery
o char interface[] - string obsahující název rozhraní kamery získaný
pomocí aplikace Camera Explorer
o char activeAttribute[] - název XML uzlu vyčtený ze souboru
vygenerovaného pomocí aplikace Camera Explorer (bez složených
závorek, ovšem včetně oddělovacích dvojteček)
o double *valueDBL - pointer na proměnnou typu double, do které se
zapíše číselná hodnota atributu. Proměnná zastupuje datové typy
UINT32, INT64, DBL, Bool (0 = false, 1 = true) a Command (0 = off, 1
= on)
o char valueString[] - string hodnota atributu. Zahrnuje datové typy
String a Enum
o Int32 lengthIn - očekávaná délka obdrženého stringu (kvůli
vyhrazení paměti pro výstupní string char ValueString*+)
Workswell s.r.o. | SmartVision SDK 2
35
SmartVision SDK 2 – uživatelský manuál
o
return:



Uložení
parametrů a
automatické
načtení
v novém
Session
V některých případech je nutné přenastavit defaultní parametry videohardwaru
pro koncovou aplikaci (typicky rozlišení kamery). V případě využití funkcí set se
příslušné parametry aplikují přímo na aktuální videohardware, ale již neuloží do
vnitřní paměti samotného videohardwaru. Proto v případě odpojení a opětovného
zapojení dojde k načtení defaultních hodnot a tedy k přepisu již nastavených
parametrů. Pro tyto případy, kdy je potřeba zajistit trvalé nastavení parametrů při
opětovném připojení videohardwaru, je k dispozici speciální funkce, která uloží
aktuálně nastavené parametry do paměti počítače. Ty jsou následně načteny při
opětovném připojení videohardwaru:

36
1 = nastavení úspěšné
0 = nastavení úspěšné/chyba
int8_t GetAttributeInfo(char interface[], char activeAttribute[], int8_t
*type, int8_t *readable, int8_t *writable, double *minimum, double
*maximum, double *valueDBL, char valueString[], int32_t len)
o Vyčte hodnotu hardwarového atributu kamery a další doplňkové
informace o atributu
o char interface[] - string obsahující název rozhraní kamery získaný
pomocí aplikace Camera Explorer
o char activeAttribute[] - název XML uzlu vyčtený ze souboru
vygenerovaného pomocí aplikace Camera Explorer (bez složených
závorek, ovšem včetně oddělovacích dvojteček)
o int8_t *type - pointer na proměnnou, do které se zapíše datový typ
daného atributu (0 = UINT32, 1 = INT64, 2 = DBL, 3 = String, 4 =
Enum, 5 = Bool, 6 = Command)
o int8_t *readable - je možné atribut číst? (0 = false, 1 = true)
o int8_t *writable - je možné atribut zapisovat? (0 = false, 1 = true)
o double *minimum - pointer na proměnnou, do které se zapíše
minimální hodnota rozsahu atributu
o double *maximum - pointer na proměnnou, do které se zapíše
maximální hodnota rozsahu atributu
o double *valueDBL - pointer na proměnnou typu double, do které se
zapíše číselná hodnota atributu. Proměnná zastupuje datové typy
UINT32, INT64, DBL, Bool (0 = false, 1 = true) a Command (0 = off, 1
= on)
o char valueString[] - string hodnota atributu. Zahrnuje datové typy
String a Enum
o Int32 lengthIn - očekávaná délka obdrženého stringu (kvůli
vyhrazení paměti pro výstupní string char ValueString*+)
o return:
 1 = nastavení úspěšné
 0 = nastavení úspěšné/chyba
int8_t SaveCamSettings(char camInterface[])
o Uloží aktuální nastavení všech atributů kamery. Při zavření a novém
spuštění session jsou tato nastavení obnovena.
o char camInterface[] - string obsahující název rozhraní kamery
získaný pomocí aplikace Camera Explorer
o return:
Univerzální DLL videoknihovna| Workswell s.r.o.
SmartVision SDK 2 – uživatelský manuál


1 = nastavení úspěšné
0 = nastavení úspěšné/chyba
Zjištění
Níže uvedené funkce jsou vhodné k získání přehledu o snímkové frekvenci a
snímkové
rozlišení výstupního obrazu. Tyto informace jsou potřeba k volání funkce MakeSnap
frekvence a
(níže).
rozlišení obrazu
 void GetFPS(double *AcquiredFPS, double *ProcessedFPS)
o Zjistí počet snímků za vteřinu ve videu
o double *AcquiredFPS - počet snímků získaných z kamery před
processingem
o double *ProcessedFPS - počet snímků získaných z kamery po
processingu
 void GetVideoResolution(int16_t *ResolutionX, int16_t *ResolutionY)
o zjistí aktuální rozlišení videa
o int16_t *ResolutionX - pointer na proměnnou typu int16, do se
zapíše horizontální rozlišení videa
o int16_t *ResolutionY - pointer na proměnnou typu int16, do se
zapíše vertikální rozlišení videa
Uložení a
načtení
aktuálního
snímku
z paměti
počítače
Základním a nejjednodušším způsobem zachycení aktuálního obrazu
z videohardwaru je načtení aktuálního obrazu z videookna do pracovní paměti
počítače. K tomuto účelu slouží funkce MakeSnap.
Získání
pointeru na
blok paměti
s aktuálním
nezpracovaným
snímkem z
kamery
Pro přístup k aktuálním nezměněným obrazovým datům z kamery lze použít
funkci GetRawImagePointer. Tato funkce vrátí pointer na blok paměti, kde je
uložen aktuální nezpracovaný snímek z kamery.
Jednorozměrné pole bytů v paměti obsahuje čistá obrazová data snímku. Formát
dat odpovídá datovému typu obrazu. Pro rekonstrukci obrazu je nutné znát další
návratové parametry funkce GetRawImagePointer.
První řádek snímku zrekonstruujeme takto: začneme u PixelPointerOut a
pokračujeme po blocích odpovídajících velikosti PixelSize až do XResolution
(poslední pixel prvního řádku. První pixel druhého řádku získáme takto:
PixelPointerOut + LineWidth a opět můžeme postupovat po blocích velikosti

void MakeSnap(uint8_t buffer[], int32_t length)
o požadavek na vytvoření snímku aktuálního videa do bufferu (pole).
Při volání je nutné parametrem length zadat požadovanou délku
čteného bufferu.
o int32_t length - délka čteného bufferu (vypočítá se jako horizontální
× vertikální rozlišení × 3 (~3 barvy), rozlišení lze rychle získat funkcí
GetVideoResolution)
o uint8_t buffer - pointer na jednorozměrné pole datového typu byte
délky length, ve kterém jsou uložena poslední snímková data. Data
jsou v poli uložena po jednotlivých pixelech zleva do prava a dále po
jednotlivých řádcích snímku. Každé po sobě jdoucí tři prvky pole
odpovídají barevným složkám každého pixelu (R, G, B). Tedy např.
pro
matici
pixelů
*1,2;3,4+
bude
pole
vypadat:
{R1,G1,B1,R2,G2,B2,R3,G3,B3,R4,G4,B4}.
Workswell s.r.o. | SmartVision SDK 2
37
SmartVision SDK 2 – uživatelský manuál
PixelSize. Takto postupujeme po řádcích až do YResolution (vertikální rozlišní =
index posledního řádku).
Černobílý snímek datového typu Mono8 má 8bitovou hodnotu každého pixelu
uloženou v jednom bytu. Každý byte pole z paměti tedy odpovídá jednomu pixelu.
Radiometrický snímek datového typu Mono16 má 16bitovou hodnotu každého
pixelu uloženou ve dvou bytech. Hodnota pixelu potom odpovídá dvěma po sobě
jdoucím bytům pole z paměti.
Barevný snímek typu RGB32 má 32bitovou hodnotu každého pixelu uloženou ve
čtyřech bytech. Hodnota pixelu potom odpovídá čtyřem po sobě jdoucím bytům
pole z paměti, přičemž první, druhý a třetí odpovídají červené, zelené a modré
složce pixelu a čtvrtý byte je nulový.

Získání
pointeru na
blok paměti
s aktuálním
zpracovaným
snímkem z
kamery
Pro přístup k aktuálním zpracovaným obrazovým datům z kamery lze použít
funkci GetOutImagePointer. Tato funkce vrátí pointer na blok paměti, kde je uložen
aktuální zpracovaný snímek z kamery (tedy snímek po průchodu softwarovými filtry,
stabilizací, apod.).
Funkce funguje totožně jako funkce GetRawImagePointer, bližší popis je tedy
stejný (viz výše).

Získání
pointeru na
blok paměti
s aktuálním
termálním
snímkem z
38
int8_t
GetRawImagePointer(uint64_t
*PixelPointerOut,
int32_t
*BufferSize, int32_t *PixelSize, int32_t *LineWidth, int32_t *XResolution,
int32_t *YResolution)
o uint64_t PixelPointerOut - pointer na první pixel snímku v paměti
(ve snímku vlevo nahoře)
o int32_t PixelSize - počet bytů obsahujících hodnotu jednoho pixelu
o int32_t BufferSize - celkový počet bytů snímku v paměti
o int32_t LineWidth - délka jednoho řádku snímku v paměti (včetně
pomocných obrazových pixelů)
o int32_t XResolution - skutečné horizontální rozlišení snímku
o int32_t YResolution - skutečné vertikální rozlišení snímku
int8_t
GetOutImagePointer(uint64_t
*PixelPointerOut,
int32_t
*BufferSize, int32_t *PixelSize, int32_t *LineWidth, int32_t *XResolution,
int32_t *YResolution)
o uint64_t PixelPointerOut - pointer na první pixel snímku v paměti
(ve snímku vlevo nahoře)
o int32_t PixelSize - počet bytů obsahujících hodnotu jednoho pixelu
o int32_t BufferSize - celkový počet bytů snímku v paměti
o int32_t LineWidth - délka jednoho řádku snímku v paměti (včetně
pomocných obrazových pixelů)
o int32_t XResolution - skutečné horizontální rozlišení snímku
o int32_t YResolution - skutečné vertikální rozlišení snímku
Pro přístup k aktuálním teplotním datům z termovizní kamery lze použít
funkci GetThermoImagePointer. Tato funkce vrátí pointer na blok paměti, kde jsou
uložena aktuální data z termovizní kamery převedená teplotní konverzí na stupně
Celsia. Data jsou uložena jako buffer dat reprezentující dvourozměrné pole.
Teplotním data jsou datového typu float (single precission) a každý pixel je tedy
uložen jako 32bitová hodnota ve čtyřech bytech. Teplotní data nejsou ovlivněna
Univerzální DLL videoknihovna| Workswell s.r.o.
SmartVision SDK 2 – uživatelský manuál
kamery
měřícími nástroji, stabilizací, atd.
Funkce GetThermoImagePointer funguje totožně jako funkce
GetRawImagePointer, bližší popis je tedy stejný (viz výše).

Nastavení
softwarové
filtrace obrazu
int8_t GetThermoImagePointer(uint64_t *PixelPointerOut, int32_t
*BufferSize, int32_t *PixelSize, int32_t *LineWidth, int32_t *XResolution,
int32_t *YResolution)
o uint64_t PixelPointerOut - pointer na první pixel snímku v paměti
(ve snímku vlevo nahoře)
o int32_t PixelSize - počet bytů obsahujících hodnotu jednoho pixelu
o int32_t BufferSize - celkový počet bytů snímku v paměti
o int32_t LineWidth - délka jednoho řádku snímku v paměti (včetně
pomocných obrazových pixelů)
o int32_t XResolution - skutečné horizontální rozlišení snímku
o int32_t YResolution - skutečné vertikální rozlišení snímku
Knihovna SmartVision Library obsahuje sadu softwarových filtračních algoritmů
pomocí, kterých je možno softwarově přepočítat obrazovou informaci. Díky tomu je
umožněno přepočítat jasové složky, kontrast, ostrost či provádět barevné
transformace.
Testovací aplikace s vypnutou softwarovou filtrací
Testovací aplikace se zapnutou softwarovou filtrací
Workswell s.r.o. | SmartVision SDK 2
39
SmartVision SDK 2 – uživatelský manuál
Popis příslušných DLL funkcí:








40
void SetSwBrightness(int8_t nVal)
o nastavení hodnoty jasu na požadovanou úroveň, rozsah -100 až 100
o nVal - hodnota jasu
 rozsah -100 až 100
int8_t GetSwBrightness(void)
o získání aktuální hodnoty jasu
o return - hodnota jasu
 rozsah -100 až 100, výchozí hodnota 0
void SetSwContrast(double fVal)
o nastavení hodnoty kontrastu na požadovanou úroveň, rozsah 0.000
až 2.000
o nVal - hodnota kontrastu
 rozsah 0.000 až 2.000
double GetSwContrast(void)
o získání aktuální hodnoty kontrastu
o return - hodnota jasu
 rozsah 0.000 až 2.000, výchozí hodnota 1.000
void SetSwSharpness(int8_t nSharp)
o nastavení USM (unsharp mask) doostrostření obrazu na
požadovanou úroveň, rozsah 0 až 100
o nSharp - hodnota doostrostření
 rozsah 0 až 100, výchozí hodnota 0 = doostřování vypnuto
int8_t GetSwSharpness(void)
o získání aktuální hodnoty doostrostření obrazu
o return - hodnota doostrostření obrazu
 rozsah 0 až 100, výchozí hodnota 0 = doostřování vypnuto
void SetSwColorTransformationValueRGB(double fR, double fG, double
fB)
o nastavení hodnoty násobičů barevných složek obrazu na
Univerzální DLL videoknihovna| Workswell s.r.o.
SmartVision SDK 2 – uživatelský manuál
požadovanou úroveň, rozsah každé složky 0.000 až 2.000
fR - hodnota násobiče červené složky
 rozsah 0.000 až 2.000
o fG - hodnota násobiče zelené složky
 rozsah 0.000 až 2.000
o fB - hodnota násobiče modré složky
 rozsah 0.000 až 2.000
void GetSwColorTransformationValueRGB(double *fR, double *fG, double
*fB)
o získání hodnot násobičů barevných složek obrazu. Parametry funkce
jsou pointery na proměnné typu double, do kterých budou uloženy
hodnoty násobičů barevných složek
o double *fR - pointer na proměnnou, do které se zapíše hodnota
násobiče červené složky, výchozí hodnota 1.000
o double *fG - pointer na proměnnou, do které se zapíše hodnota
násobiče zelené složky, výchozí hodnota 1.000
o double *fB - pointer na proměnnou, do které se zapíše hodnota
násobiče modré složky, výchozí hodnota 1.000
void SetSwPolynomTransformation(double fConstX3, double fConstX2,
double fConstX1, double fConstX0)
o nastavení hodnot parametrů pro transformaci intenzit pixelů
obrazu. Parametry zastupují jednotlivé koeficienty polynomu 3.
řádu.
o double fConstX3 - hodnota koeficientu třetího řádu
 rozsah - plný rozsah proměnné typu double precision float
o double fConstX2 - hodnota koeficientu druhého řádu
 rozsah - plný rozsah proměnné typu double precision float
o double fConstX1 - hodnota koeficientu prvního řádu
 rozsah - plný rozsah proměnné typu double precision float
o double fConstX0 - hodnota koeficientu nultého řádu
 rozsah - plný rozsah proměnné typu double precision float
void GetSwPolynomTransformation(double *fConstX3, double *fConstX2,
double *fConstX1, double *fConstX0)
o získání hodnot parametrů pro transformaci intenzit pixelů obrazu.
Parametry zastupují jednotlivé koeficienty polynomu 3. řádu.
Parametry funkce jsou pointery na proměnné typu double, do
kterých budou uloženy hodnoty koeficientů.
o double *fConstX3 - pointer na proměnnou, do které se zapíše
hodnota koeficientu třetího řádu
 rozsah - plný rozsah proměnné typu double precision float
 výchozí hodnota = 0
o double *fConstX2 - pointer na proměnnou, do které se zapíše
hodnota koeficientu druhého řádu
 rozsah - plný rozsah proměnné typu double precision float
 výchozí hodnota = 0
o double *fConstX1 - pointer na proměnnou, do které se zapíše
hodnota koeficientu prvního řádu
 rozsah - plný rozsah proměnné typu double precision float
 výchozí hodnota = 1
o double *fConstX0 - pointer na proměnnou, do které se zapíše
hodnota koeficientu nultého řádu
o



Workswell s.r.o. | SmartVision SDK 2
41
SmartVision SDK 2 – uživatelský manuál


Ovládání
digitální
stabilizace
obrazu
rozsah - plný rozsah proměnné typu double precision float
výchozí hodnota = 0
Některé aplikace pro zpracování obrazu jsou značně zatíženy nestabilitou
obrazové scény. Například jako jsou vibrace automobilu či rotace ramena, na
kterém je kamerový systém připevněn. K odstranění a zlepšení stability obrazové
scény lze použít speciální algoritmus digitální stabilizace. Ten pomocí korelačních
funkcí a sledování pohybu obrazové scény dokáže výrazně zlepšit výsledný obraz.




void StabON()
o zapnutí stabilizace
void StabOFF()
o vypnutí stabilizace
void StabSetup(uint16_t xResolution, uint16_t sensitivity, uint8_t angle,
uint8_t corrRotation, uint8_t interpolate)
o nastavení pokročilých parametrů stabilizace
o uint16_t xResolution - rozlišení použité pro subsampling obrazu,
který je použit pro stabilizaci. Nižší xResolution znamená zrychlení
algoritmu stabilizace a snížení výpočetní náročnosti za cenu ztráty
detailů použitých k rozlišení oblasti pro stabilizaci. Zadává se pouze
horizontální rozlišení, vertikální je dopočítáno tak, aby byl dodžen
poměr stran vstupního obrazu. Při změně rozlišení je automaticky
stabilizace vypnuta a je nutné ji znovu zapnout fcí StabON().
 rozsah = 0 - 65536, výchozí hodnota = 1024
o uint16_t sensitivity - citlivost vyhledávání oblasti pro stabilizaci v
obrazu. Vyšší citlivost znamená více tolerantní algoritmus
stabilizace, ovšem za cenu možnosti zachytit falešnou oblast
používanou pro stabilizaci. Nižší citlivost je přísnější ve vyhledávání
oblasti v obraze.
 rozsah = 0 - 100, výchozí hodnota = 20
o uint8_t angle - nastavení možnosti rotace oblasti používané pro
stabilizaci. Zásadně ovlivňuje výpočetní náročnost stabilizace.
 rozsah = 0 - 180, výchozí hodnota = 4
o uint8_t corrRotation - zapnutí/vypnutí stabilizace rotace kamery.
Má zásadní vliv na výpočetní náročnost stabilizace.
 1 = zapnuto, 0 = vypnuto, výchozí hodnota = 0
o uint8_t interpolate - zapnutí/vypnutí interpolace výstupního obrazu
při zapnuté stabilizaci rotace kamery. Opět má velký vliv na
výpočetní náročnost stabilizace.
 1 = zapnuto, 0 = vypnuto, výchozí hodnota = 0
void StabShowOrigVideo(uint8_t showOrigVideo)
o demonstrační
funkce, která otevře přídavné okno s
nestabilizovaným obrazem (pro porovnání stabilizovaného a
nestabilizovaného videa)
o uint8_t showOrigVideo - otevře/zavře okno s nestabilizovaným
obrazem
 1 = zapnuto, 0 = vypnuto, výchozí hodnota = 0
Ukázka videa stabilizovaného digitální stabilizací
42
Univerzální DLL videoknihovna| Workswell s.r.o.
SmartVision SDK 2 – uživatelský manuál
Workswell s.r.o. | SmartVision SDK 2
43
SmartVision SDK 2 – uživatelský manuál
Termovizní
kamery a
měření
teplotních dat
Nastavení
převodu
teplotních dat
SmartVision Library podporuje všechny termovizní kamery s rozhraním GiGE.
Termovizní kamera potom musí být nastavena tak, aby výstupní signál z kamery byl
8 nebo 16bitový, jinými slovy, aby měl datový typ UINT8, UINT16 nebo INT16.
Datový typ výstupního signálu kamery je možné nastavit funkcí SetAttribute.
Nastavení převodu výstupního signálu z kamery na stupně Celsia lze provést
funkcí SetConversionMethod. Existují 3 možnosti převodu - žádný převod, převod
pomocí M Scriptu a automatický převod dat z podporovaných kamer (FLIR A5, A15,
A35, A65, A315, A615).
Automatický
U podporovaných termovizních kamer FLIR SmartVision Library automaticky
převod
převádí výstupní signál z kamery na teplotní data. Je však nutné kamery ručně
teplotních dat z správně nakonfigurovat. Pokud je použita kamera řady Ax5 společnosti FLIR, je
kamer FLIR
nutné po spuštění Session nastavit funkcí SetAttribute atributy:
 “CameraAttributes::ImageFormatControl::PixelFormat” na hodnotu
“Mono14”
 “CameraAttributes::ImageStreamControl::DigitalOutput” na hodnotu
“bit14bit”.
Pokud je použita kamera řady Ax15 společnosti FLIR, je nutné po spuštění Session
nastavit atributy:
 “CameraAttributes::ImageFormatControl::PixelFormat” na hodnotu
“Mono16”
 “CameraAttributes::ImageStreamControl::IRFormat” na hodnotu
“TemperatureLinear100mK” nebo “TemperatureLinear10mK” (podle
požadované přesnosti měření)
Dále je nutné po spuštění Session pomocí funkce SetConversionMethod nastavit
příslusný typ kamery. Po tomto nastavení by výstupní teplotní snímek měl
obsahovat teplotní data ve stupních Celsia (lze zkontrolovat např. funkcí
GetThermoImagePointer).
Převod
Další možností je převod výstupního signálu z kamery pomocí M Scriptu. Jedná se
teplotních dat z o textový soubor psaný programovacím jazykem MATLAB®. Aby bylo možné
kamer pomocí převádět data z kamery pomocí M Scriptu, je nutné dodržet následující požadavky:
M Scriptu
 M Script musí obsahovat funkci s názvem “thermo_conversion”.
 Soubor M Scriptu se musí jmenovat “thermo_conversion.m”.
 Soubor M Scriptu musí být umístěn v jedné z cest:
o C:\Program Files (x86)\Workswell SmartVision\
o C:\Program Files\Workswell SmartVision\
o C:\
Níže je uveden příklad M Scriptu, který převede výstupní signál z kamery na
stupně Celsia tak, že matici signálu z kamery přenásobí 10:
function out = thermo_conversion(in)
out = in*10;
Dále je nutné po spuštění Session pomocí funkce SetConversionMethod nastavit
převod teplotních dat pomocí M Scriptu. Po tomto nastavení by výstupní teplotní
44
Univerzální DLL videoknihovna| Workswell s.r.o.
SmartVision SDK 2 – uživatelský manuál
snímek měl obsahovat teplotní data ve stupních Celsia (lze zkontrolovat např. funkcí
GetThermoImagePointer).
Měřící funkce
Pokud je správně nastaven převod dat z kamery, je možné pomocí SmartVision
Library provádět měření teplot a teplotních statistik přímo v živém obraze z
termovizní kamery.
Nejprve je nutné v obrazu zadefinovat oblast zájmu, tzv. ROI (region of interest),
ve které se bude provádět měření. ROI je možné definovat kreslením do obrazu
nebo programově zadáním hraničních bodů pomocí funkce SetMeasROI. Pro ruční
kreslení ROI je možné zobrazit paletu kreslících nástrojů funkcí SetROIToolsVis,
nebo přímo zvolit nástroj, kterým se bude kreslit pomocí funkce SetROITool. K
měřění jsou dostupné tyto ROI oblasti:
 bod
 úsečka
 obdélník
 elipsa
 polygon
 lomená čára
Ukázka palety měřících nástrojů a typů měřících oblastí
Po zadefinování oblasti je jí přiřazen pořadový identifikátor, který se zobrazuje na
jejím okraji. Pomocí identifikátoru je poté možné z konkrétních ROI měřit teplotní
statistiky funkcemi GetMinMaxAvg, GetAvgVarStd, GetMedian, GetRMS, případně
je možné získat kompletní vektor teplot z dané oblasti funkcí GetMeasData.
Dále je možné v každé ROI zobrazovat aktuální minimální a maximální teplotu
funkcí SetMinMaxDiplay anebo ROI skrýt a znovu zobrazit funkcí SetROIDisplay.
Funkce pro
nastavení
měření,

int8_t SetConversionMethod(int32_t conversionMethod),
o Nastavuje způsob převodu výstupního signálu z termovizní kamery
na stupně Celsia.
Workswell s.r.o. | SmartVision SDK 2
45
SmartVision SDK 2 – uživatelský manuál
o
termálního
obrazu a
zadávání ROI



46
int32_t conversionMethod - metoda převodu signálu
 0 = žádný převod (výchozí)
 1 = M Script
 2 = A5
 3 = A15
 4 = A35
 5 = A65
 6 = A315
 7 = A615
o return int8_t:
 1 = nastavení způsobu převodu proběhlo úspěšně
 0 = nastavení způsobu převodu proběhlo neúspěšně
void SetROIToolsVis(int8_t enable)
o Nastavuje zobrazení palety s nástroji pro kreslení ROI
o int8_t enable
 0 = paleta vypnuta
 1 = paleta zapnuta
void SetROITool(int32_t ROITool)
o Vybere konkrétní nástroj pro kreslení ROI. Vhodné, pokud není
žádoucí zobrazovat paletu s nástroji pro kreslení ROI
o int32_t ROITool - vybraný nástroj pro kreslení ROI
 0 = kreslení ROI vypnuto
 1 = bod
 2 = úsečka
 3 = obdélník
 4 = elipsa
 5 = polygon
 6 = lomená čára
int32_t SetMeasROI(int32_t ROIType, int32_t points[], int32_t len)
o Umožňuje zadat ROI programově (bez kreslení) pomocí hraničních
bodů oblasti.
o int32_t ROIType - typ ROI
 0 = ROI vypnuto
 1 = bod
 2 = úsečka
 3 = obdélník
 4 = elipsa
 5 = polygon
 6 = lomená čára
o int32_t points[] - pole souřadnic jednotlivých bodů oblasti.
Jednotlivé souřadnice jsou zadávány za sebou. Podle typu oblasti
má pole následující formáty:
 Bod - souřadnice *x, y+.
 Úsečka - souřadnice *x,y+ počátečního bodu, souřadnice *x,
y+ koncového bodu (tedy pole tvaru *x1, y1, x2, y2]).
 Obdélník - souřadnice *x, y+ levého horního rohu,
souřadnice *x, y+ pravého spodního rohu (tedy pole tvaru
[xLH, yLH, xPS, yPS]).
 Elipsa - souřadnice přímek tvořících strany obdélníku
obklopujícího elipsu *levá strana (x souřadnice), horní strana
(y souřadnice), pravá strana (x souřadnice), spodní strana (y
Univerzální DLL videoknihovna| Workswell s.r.o.
SmartVision SDK 2 – uživatelský manuál
souřadnice)+, tedy pole tvaru *xL, yH, xP, yS].
Polygon - souřadnice *x, y+ všech po sobě jdoucích uzlů.
První a poslední body musejí být stejné. Tedy pole tvaru *x1,
y1, x2, y2, …, xN, yN, x1, y1]).
 Lomená čára - souřadnice *x, y+ všech po sobě jdoucích uzlů.
o int32_t len - délka pole bodů
void SetManualRange(int8_t enable, float min, float max)
o Nastavuje manuální rozsah zobrazovaných teplot. Ve výchozím
stavu je zobrazení termálního obrazu nastaveno na automatický
rozsah teplot, takže pokud je pro zobrazení použita např. paleta
odstínů šedé, odpovídá minimální teplotě v obraze černá barva a
maximální teplotě bílá barva.
o int8_t enable - vypnout/zapnout manuální rozsah
o float min - minimální zobrazovaná teplota. Tato teplota bude
reprezentována nejnižší teplotou (barvou) použité palety a všechny
nižší teploty v obraze budou mít stejnou barvu.
o float max - maximální zobrazovaná teplota. Tato teplota bude
reprezentována nejvyšší teplotou (barvou) použité palety a všechny
vyšší teploty v obraze budou mít stejnou barvu.


Ukázka nastavení manuálního rozsahu minimální a maximální teploty

void SetThermoPalette(int32_t palette)
o Nastavuje paletu pro reprezentaci termálního obrazu
o int32_t palette - typ palety
 0 = Gray
 1 = Gradient
 2 = Rainbow
 3 = Temperature
 4 = Iron
Ukázka dostupných palet
Workswell s.r.o. | SmartVision SDK 2
47
SmartVision SDK 2 – uživatelský manuál



Čtení měřených
teplotních dat a
statistik


48
void SetMinMaxDiplay(int32_t index, int8_t enable)
o Vypne/zapne zobrazování minima a maxima v dané ROI
o int32_t index - pořadový identifikátor odkazující na požadovanou
ROI
o int8_t enable
 0 = zobrazení minima a maxima vypnuto
 1 = zobrazení minima a maxima zapnuto
void SetMinMaxRefresh(float refresh)
o Nastaví frekvenci obnovení výpočtu a zobrazení minima a maxima
o float refresh - perioda obnovení minima a maxima v sekundách
(umožňuje zadat i desetinné číslo)
void SetROIDisplay(int32_t index, int8_t enable)
o Vypne/zapne zobrazení dané ROI
o int32_t index - pořadový identifikátor odkazující na požadovanou
ROI
o int8_t enable
 0 = zobrazení ROI vypnuto
 1 = zobrazení ROI zapnuto
int32_t GetMeasDataLength(int32_t index)
o Získá délku dat v měřící ROI oblasti
o int32_t index - pořadový identifikátor odkazující na požadovanou
ROI
o return int32_t - délka dat v ROI
void GetMeasData(int32_t index, float appendedArray[], int32_t len)
o Vyčte vektor teplotních dat z ROI oblasti. Data jsou z oblasti čtena
po řádcích zleva doprava. V závislosti na velikosti a typu oblasti
může vyčítání trvat několik milisekund. Pro vyčtení dat je nutné
Univerzální DLL videoknihovna| Workswell s.r.o.
SmartVision SDK 2 – uživatelský manuál
předem znát délku dat získanou funkcí GetMeasDataLength
int32_t index - pořadový identifikátor odkazující na požadovanou
ROI
o float appendedArray[] - pointer na jednorozměrné pole datového
typu float délky parametru len, do kterého bude uložen vektor
teplotních dat. Data jsou v poli uložena po jednotlivých pixelech
zleva doprava a dále po jednotlivých řádcích snímku.
o int32_t len - délka čtených dat získaná funkcí GetMeasDataLength
void GetMinMaxAvg(int32_t index, float *maxValue, float *minValue,
float *avg)
o Vyčte minimální, maximální a průměrnou teplotu v ROI
o int32_t index - pořadový identifikátor odkazující na požadovanou
ROI
o float *maxValue - pointer na proměnnou typu float, do které se
zapíše maximální teplota v ROI
o float *minValue - pointer na proměnnou typu float, do které se
zapíše minimální teplota v ROI
o float *avg - pointer na proměnnou typu float, do které se zapíše
průměrná teplota v ROI
void GetMinMaxCoords(int32_t index, float *maxValue, float *minValue,
int32_t *maxX, int32_t *maxY, int32_t *minX, int32_t *minY)
o Vyčte minimální a maximální teplotu v ROI včetně souřadnic pixelů s
těmito extrémy
o int32_t index - pořadový identifikátor odkazující na požadovanou
ROI
o float *maxValue - pointer na proměnnou typu float, do které se
zapíše maximální teplota v ROI
o float *minValue - pointer na proměnnou typu float, do které se
zapíše minimální teplota v ROI
o int32_t *maxX - pointer na proměnnou typu float, do které se
zapíše X souřadnice maximální teploty v ROI
o int32_t *maxY - pointer na proměnnou typu float, do které se
zapíše Y souřadnice maximální teploty v ROI
o int32_t *minX - pointer na proměnnou typu float, do které se zapíše
X souřadnice minimální teploty v ROI
o int32_t *minY - pointer na proměnnou typu float, do které se zapíše
Y souřadnice minimální teploty v ROI
void GetAvgVarStd(int32_t index, float *avg, float *var, float *std)
o Vyčte průměrnou teplotu, rozptyl a směrodatnou odchylku teplot v
ROI
o int32_t index - pořadový identifikátor odkazující na požadovanou
ROI
o float *avg - pointer na proměnnou typu float, do které se zapíše
průměrná teplota v ROI
o float *var - pointer na proměnnou typu float, do které se zapíše
rozptyl teplot v ROI
o float *std - pointer na proměnnou typu float, do které se zapíše
směrodatná odchylka teplot v ROI
float GetMedian(int32_t index)
o Vyčte medián teplot v ROI
o int32_t index - pořadový identifikátor odkazující na požadovanou
o




Workswell s.r.o. | SmartVision SDK 2
49
SmartVision SDK 2 – uživatelský manuál
ROI
return float - medián teplot v ROI
float GetRMS(int32_t index)
o Vyčte kvadratický průměr teplot v ROI
o int32_t index - pořadový identifikátor odkazující na požadovanou
ROI
o return float - kvadratický průměr teplot v ROI
o

Ukázka měření statistických dat v TestApp
Nahrávání
videa
50
Knihovna SmartVision Library umožňuje nahrávání videa v reálném čase a při
maximálním možném počtu snímků za vteřinu. Při nahrávání jsou nekomprimovaná
data z kamery ukládána dočasně disk tak, aby se neztrácel čas komprimováním
videa. Tato data jsou automaticky průběžně při nahrávání komprimována
enkodérem videa a po komprimaci mazána.
Protože operace nahrávání a komprimování jsou odděleny, je nutné mít
vícejádrový procesor. Protože enkodér většinou komprimuje video pomaleji, než je
nahráváno, na disku se postupně vytvářejí dočasné soubory. Je tedy nutné hlídat
prostor na pevném disku, aby nedošlo k jeho zaplnění. Protože jsou video data
extrémně datově náročná, je zapotřebí velký a rychlý pevný disk (při rozlišení
800x600 a 30 FPS se na disk zapisuje rychlostí cca 41MB/s, při rozlišení 1280x1024 a
30 FPS cca 113MB/s, při 1920x1080 a 30 FPS cca 180MB/s, pokud se nahrává
nekomprimované video, jsou rychlosti a objemy dat ještě o cca 33% vyšší). Při
nahrávání nekomprimovaného videa jsou velké dočasné soubory průběžně mazány
jakmile jsou z nich video data zkomprimována.
Pokud se rychlost zápisu pohybuje na hranici schopností použitého pevného
disku (klasický pevný disk cca 50-100MB/s, SSD disk cca 200-300MB/s) je možné, že
při nahrávání videa dojde ke kolísání počtu snímků za vteřinu. V tomto případě
může pomoci nastavení enkodéru na postupnou kompresi funkcí
RecSetEncoderOperation.
Rychlost komprimace závisí na použitém kodeku a jeho nastavení. Nastavení
kodeku je možné přes aplikaci, která umí otevřít dialog s jeho nastaveními - např.
Univerzální DLL videoknihovna| Workswell s.r.o.
SmartVision SDK 2 – uživatelský manuál
aplikace VirtualDub (zvolit v menu Video -> Compression -> vybrat daný kodek a
Configure). Doporučujeme vyzkoušet např. volně dostupný kodek Xvid.
Základní nastavení kodeku Xvid provádíme posuvníkem označeným červeně na
následujícím obrázku (vlevo maximální kvalita videa a vpravo maximální rychlost
komprese) a nastavením Quality preset na General Purpose/Realtime (první
možnost produkuje kvalitnější video, druhá zase rychlejší kompresi, takže se tolik
neplní disk dočasnými soubory).
Konfigurace kodeku Xvid
Nároky na prostor a rychlost pevného disku, stejně jako rychlost komprese lze
zcela zásadně ovlivnit zmenšením rozlišení a počtu snímků za vteřinu výstupního
videa funkcí RecSetEncoderSettings.
Protože komprimace trvá déle, než samotné nahrávání videa, je například při
zavírání aplikace nutné ohlídat, jestli už byla komprese všech dat dokončena funkcí
RecGetEncoderStatus, která vrátí status enkodéru a odhadovaný zbývající čas do
dokončení komprese.
Protože video formát AVI neumožňuje video s proměnným počtem snímků za
vteřinu, je při samotném nahrávání zcela nezbytné zajistit, aby nedošlo k poklesu
FPS třeba vlivem digitální stabilizace, filtrování obrazu a podobně. Všechny funkce (a
další procesy ve Windows) musí běžet ještě před zahájením nahrávání, tak aby se
počet snímků za vteřinu ustálil a dále při nahrávání nekolísal. V opačném případě
bude výsledkem video se zrychlenými nebo zpomalenými scénami. Protože je
nahrávání extrémně náročné i na procesor počítače, doporučujeme při nahrávání
zavřít všechny ostatní aplikace, vypnout antivirový program a firewall.
Popis příslušných DLL funkcí:
Workswell s.r.o. | SmartVision SDK 2
51
SmartVision SDK 2 – uživatelský manuál

void RecGetCodecs(char codecNames[], int32_t len)
o Získá seznam kodeků pro nahrávání videa dostupných v OS
Windows. Je podporován libovolný kodek s rozhraním Video for
Windows
o char codecNames[] - string obsahující dostupné a použitelné kodeky
oddělené středníkem. Pro nastavení komprese při nahrávání je
nutné zadat jeden z kodeků (mezi středníky).
o Int32 len - očekávaná délka obdrženého stringu (kvůli vyhrazení
paměti pro výstupní string char codecNames*+)

int8_t RecGetEncoderStatus(uint32_t *timeRemaining)
o Získá status enkodéru videa.
o uint32_t *timeRemaining - pointer na proměnnou typu uint32_t, do
které se zapíše odhadovaný zbývající čas pro kompresi videa. Odhad
je pouze přibližný.
o return int8_t:
 1 = enkodování videa probíhá
 0 = enkodování videa dokončeno/neprobíhá
void RecSetEncoderSettings(uint16_t xResolution, uint16_t yResolution,
uint16_t FPSLimit, char codec[])
o Nastavení parametrů enkodéru videa. Nastavování parametrů
enkodéru nelze měnit v průběhu nahrávání videa a nastavení
kodeku ani v průběhu komprimace videa.
o uint16_t xResolution - nastavení horizontálního rozlišení výstupního
videa.
 výchozí hodnota 0 = horizontálního výstupní rozlišení je
stejné jako vstupní rozlišení obrazu
 pokud je nastaveno xResolution a yResolution je = 0,
vertikální rozlišení výstupního videa se automaticky
dopočítá tak, aby výstupní video mělo stejný poměr stran
jako vstupní obraz
o uint16_t yResolution - nastavení vertikálního rozlišení výstupního
videa
 výchozí hodnota 0 = horizontálního výstupní rozlišení je
stejné jako vstupní rozlišení obrazu
o uint32_t FPSLimit - omezení počtu snímků za vteřinu výstupního
videa
 výchozí hodnota 0 = výstupní počet snímků za vteřinu je
stejný jako aktuální snímaný počet snímků za vteřinu (resp.
maximální možný)
o char codec[] - string obsahující název kodeku pro komprimaci videa.
Názvy dostupných kodeků lze získat funkcí RecGetCodecs
 výchozí hodnota: prázdný string = reprezentuje nahrávání v
nekomprimovaném formátu (ARGB32)
void RecSetEncoderOperation(uint8_t operation)
o Nastavení chování enkodéru videa. Je možné zvolit mezi průběžnou
a postupnou kompresí videa. Při průběžné kompresi enkodér
zpracovává video ještě v průběhu nahrávání a šetří tak místo na
disku, protože průběžně maže již zpracované soubory. Při postupné
kompresi enkodér začne zpracovávat videa až po ukončení
nahrávání. Snižuje se tak zátěž pevného disku (není nutné zároveň
o


52
Univerzální DLL videoknihovna| Workswell s.r.o.
SmartVision SDK 2 – uživatelský manuál


12
zapisovat a číst jako v případě průběžné komprese) a tím i případný
pokles FPS při nahrávání. Pokud se při postupné kompresi opět
spustí nahrávání, je enkodér dočasně pozastaven. Nastavení nelze
měnit v průběhu nahrávání videa.
o uint8_t operation - nastavení způsobu komprimace
 výchozí hodnota 0 = průběžná komprese
 1 = postupná komprese
void RecRecordStart(char directory[], char filename[])
o spuštění nahrávání
o char directory[] - string obsahující cestu k nahrávanému souboru
 výchozí hodnota: prázdný string = videa se uloží do cesty
“C:\”
o char filename[] - string obsahující název nahrávaného souboru
 výchozí hodnota: prázdný string = název souboru je
automaticky vygenerován ve tvaru “dd.m.rrrr_hh-mmss.avi”
void RecRecordStop()
o ukončení nahrávání
Tutoriál pro vývoj v jazyce C#
Testovací
aplikace
Součástí balíku SmartVision SDK je také demonstrační aplikace v jazyce C#, která
ukazuje jednoznačné využití všech DLL funkcí a vyčtení videodat. Principiálně je
přístup, ovládání a čtení velmi podobné ať už se jedná o jazyk C, C++ či jiné
standardní textové jazyky podporující import a přístup na DLL knihovny.
Readme.txt
V textovém souboru readme naleznete instrukce, kde nakopírovat příslušné DLL
knihovny a jak s nimi manipulovat. V případě dotazů prosím postupujte dle instrukcí
z kapitoly Nápověda a dotazy.
Workswell s.r.o. | SmartVision SDK 2
53

Podobné dokumenty

Název článku: Vyhledávání a video 1. Seznamte se s videem

Název článku: Vyhledávání a video 1. Seznamte se s videem budou některé z webových sídel či vyhledávačů, na nichž lze rozličně textově vyhledávat videa podle různých údajů. Zmínit si ale rovněž zasluhují takové webové stránky, které ač nenabízejí vyhledáv...

Více

EIS PRŮMYSLOVÉHO PODNIKU A JEHO DATOVÁ ZÁKLADNA 1

EIS PRŮMYSLOVÉHO PODNIKU A JEHO DATOVÁ ZÁKLADNA 1 Pracovní stanice - druhou úroveň tvoří počítače spojené do sítě typu LAN (Local Area Network), kde jsou data ukládány lokálně. Programové vybavení čítá operační systém Windows NT 4.0, databázový pr...

Více

Katalog The TRIADS - Nový Test Server Triads!

Katalog The TRIADS - Nový Test Server Triads! tuning sraz, svatba apod.)! 13) Pokud odcházíte od počítače, používejte při odchodu na krátkou dobu příkaz /afk, při odchodu na delší dobu vypněte hru. Nikdy nevcházejte do windowsu - anticheat vás...

Více

Nový x102.3

Nový x102.3 Připojení měřidel...................................................................................................................................42

Více

Image Acquisition From GigE Vision Cameras

Image Acquisition From GigE Vision Cameras the NI PCIe-8231 one-port interface, the NI PCIe-8235 four-port interface, and the NI PXIe-8234 two-port interface. NI Vision Acquisition software is highly optimized for these controllers, and the...

Více

Pinnacle Studio 15 Příručky

Pinnacle Studio 15 Příručky Networks Inc.  Tento produkt obsahuje části obrazového kódu ve vlastnictví společnosti Pegasus Imaging Corporation, Tampa, FL a chráněný autorskými právy. Všechna práva vyhrazena.  MPEG Layer II ...

Více

Intelligent Field Instruments and FDT/DTM Standard Inteligentní

Intelligent Field Instruments and FDT/DTM Standard Inteligentní potřebná data a probíhat interakce. Architektura je vysoce flexibilní a rozšiřitelná, umožňuje implementovat pouze základní nástroje na počátku a postupem času rozšiřovat funkčnost. Tyto funkce při...

Více