Lua API: framediff#
Leírás#
A framediff adatszerkezet információt tartalmaz a CMUcam3-mal készített két különböző képkocka közötti különbségről. Belsőleg ezeket a képkockákat egy „current” és egy „previous” sablonban tárolják. A két sablon közötti összehasonlítások a framediff_scanline_start, framediff_scanline és framediff_scanline_finish használatával történnek.
Példa#
Ez a példa egy megvalósítást mutat be a CMUcam3 és a képkockakülönbség-számítás használatával. Ciklusban fut, képeket készít, amíg az egyik kép nem különbözik az előzőtől, ekkor lemezre menti azt a képet a save_picture meghívásával.
-- get a new framediff, and initialize it
fdiff = framediff_new(16, 16);
fdiff:set_total_x(pixbuf_get_width());
fdiff:set_total_y(pixbuf_get_height());
fdiff:set_threshold(10);
img = image_new(pixbuf_get_width(), 1); -- need an image object for the framediff'ing
take_picture();
fdiff:set_load_frame(true);
-- take the first picture
if (framediff_scanline_start(fdiff) > 0) then
while pixbuf_read_rows(img, 1) > 0 do
framediff_scanline(img, fdiff);
end
framediff_scanline_finish(fdiff);
end
fdiff:set_load_frame(false);
-- now keep taking pictures until a picture is different than its predecessor
repeat
take_picture();
if (framediff_scanline_start(fdiff) > 0) then
while pixbuf_read_rows(img, 1) > 0 do
framediff_scanline(img, fdiff);
end
framediff_scanline_finish(fdiff);
else
print("Error!");
end
fdiff:swap_templates(); -- put current template in previous template spot
until fdiff:get_num_pixels() > fdiff:get_threshold()
-- we got an image that was different! Save it to disk, and send it to the Camscripter
save_picture("Diff.ppm"):
print_picture();
Konstruktor#
Lásd a framediff_new függvényt a Lua API: Függvények oldalon
Metódusok#
disposeget_coiget_load_frameget_num_pixelsget_template_heightget_template_widthget_thresholdget_total_xget_total_yset_coiset_load_frameset_total_xset_total_yset_thresholdswap_templates
dispose#
fdiff:dispose()
- Paraméterek:
nincs
- Visszatérési értékek:
nincs
Lehetőséget biztosít arra, hogy explicit módon szabadítsa fel az ehhez a framediff adatszerkezethez tartozó memóriát, ahelyett, hogy megvárná, amíg a Lua szemétgyűjtő felszabadítja azt a memóriát. Figyelmeztetés: Egy framediff dispose meghívása utáni használatából valószínűleg hibák keletkeznek, erősen ajánlott, hogy ezt ne tegye.
get_coi#
fdiff:get_coi()
- Paraméterek:
nincs
- Visszatérési értékek:
ennek a framediff szerkezetnek az érdeklődésre számot tartó csatornája.
Kérje le ennek a szerkezetnek az érdeklődésre számot tartó csatornáját. A lehetséges visszatérési értékekért lásd az érdeklődésre számot tartó csatorna konstansait a Lua API: Konstansok oldalon.
get_load_frame#
fdiff:get_load_frame()
- Paraméterek:
nincs
- Visszatérési értékek:
hogy szeretnénk-e új képkockát betölteni, vagy sem
Kérje le ennek a framediff objektumnak a load_frame értékét. A load_frame azt határozza meg, hogy be kell-e töltenünk egy új képkockát a CMUcam3-ból, mielőtt bármilyen különbség-számítást végeznénk az aktuális és az előző sablon között.
get_num_pixels#
fdiff:get_num_pixels()
- Paraméterek:
nincs
- Visszatérési értékek:
a jelenlegi sablon és az előző sablon közötti eltérő pixelek száma
A framediff_scanline_start, framediff_scanline és framediff_scanline_finish használata után hívja meg ezt a metódust, hogy megkapja a jelenlegi és az előző sablon között talált eltérő pixelek számát.
get_template_height#
fdiff:get_template_height()
- Paraméterek:
nincs
- Visszatérési értékek:
a sablonok magassága
Kérje le a különbség-számításnak alávetett sablonok magasságát.
get_template_width#
fdiff:get_template_width()
- Paraméterek:
nincs
- Visszatérési értékek:
a sablonok szélessége
Kérje le a különbség-számításnak alávetett sablonok szélességét.
get_total_x#
fdiff:get_total_x()
- Paraméterek:
nincs
- Visszatérési értékek:
az elemzendő teljes szélesség
Kérje le a teljes szélességet, amely általában megegyezik a pixbuf_get_width értékkel
get_total_y#
fdiff:get_total_y()
- Paraméterek:
nincs
- Visszatérési értékek:
az elemzendő teljes magasság
Kérje le a teljes szélességet, amely általában megegyezik a pixbuf_get_height értékkel
set_coi#
fdiff:set_coi(integer channel_of_interest)
- Paraméterek:
channel_of_interestAz új érdeklődésre számot tartó csatorna a képkockakülönbség-számításhoz- Visszatérési értékek:
nincs
Állítsa be az érdeklődésre számot tartó csatornát a képkockakülönbség-számításhoz. A channel_of_interest paraméternek a Lua API: Konstansok oldalon található, érdeklődésre számot tartó csatorna konstansok egyikének kell lennie.
set_load_frame#
fdiff:set_load_frame(boolean newValue)
- Paraméterek:
newValueAz új érték- Visszatérési értékek:
nincs
Szabályozza, hogy szükséges-e új képkocka betöltése a képkockakülönbség-számítás következő körében. Ha ez igaz, egy új kép készül, és a képkockakülönbség-számítás céljából az aktuális sablonként tárolódik.
set_total_x#
fdiff:set_total_x(integer total_x)
- Paraméterek:
total_xa total_x új értéke- Visszatérési értékek:
nincs
Állítsa be a total_x értékét a framediff csomaghoz.
set_total_y#
fdiff:set_total_y(integer total_y)
- Paraméterek:
total_ya total_y új értéke- Visszatérési értékek:
nincs
Állítsa be a total_y értékét a framediff csomaghoz.
set_threshold#
fdiff:set_threshold(integer threshold)
- Paraméterek:
thresholdAz új küszöbérték- Visszatérési értékek:
nincs
Állítsa be a küszöböt, a pixelek eltérésének számában, amely meghatározza, hogy az egyik képkocka „különbözőnek” minősül-e egy másik képkockától.
swap_templates#
fdiff:swap_templates
- Paraméterek:
nincs
- Visszatérési értékek:
nincs
Felcseréli az aktuális és az előző sablont ebben a framediff szerkezetben. Ez a függvény a current_template-et a previous_template-be teszi, és fordítva.