class ImageIO – objekt ImageIO¶
Klasa ImageIO snima i reproducira tokove sličica Image u OpenMV-ovom izvornom formatu pohranjenom na disku. Jedan tok može sadržavati heterogene sličice (različitih formata piksela / veličina) i za svaku bilježi međusličični interval kako bi reprodukcija ponovno stvorila izvornu brzinu sličica.
Postoje dvije pozadinske pohrane:
Tok datoteke – sličice se čitaju iz / dodaju u datoteku na datotečnom sustavu. Datoteka započinje 16-bajtnim magičnim zaglavljem
OMV IMG STR Vx.yiza kojeg slijede blokovi po sličici. Trenutni zapisivač emitiraV2.0; starijeV1.0iV1.1datoteke i dalje su čitljive.Memorijski tok – sličice se čitaju iz / zapisuju u RAM međuspremnik fiksne veličine dodijeljen u trenutku konstrukcije. Koristan za propuštanje sličica kroz filtre kojima je potrebno snimanje bez doticanja datotečnog sustava.
- class image.ImageIO(path: str | Tuple[int, int, int], mode: str | int)¶
Stvara
ImageIOtok.Ako je
pathniz znakova, na toj putanji otvara se tok datoteke.modemora biti jedno od:Ako je
path3-torka(w, h, pixformat), dodjeljuje se memorijski tok.modeje tada cijeli broj broja utora za sličice koji se unaprijed dodjeljuju. Međuspremnik je dimenzioniran zacountsličica veličine(w, h, pixformat)i ne smije rasti nakon stvaranja.pixformatje jedno odimage.BINARY,image.GRAYSCALE,image.RGB565,image.BAYER,image.YUV422,image.JPEGiliimage.PNG. Za komprimirane formate (image.JPEG,image.PNG) veličina po utoru procjenjuje se na 2 bpp; sličice veće od procjene izazivajuValueErrorpri pozivuwrite().Pregled¶
- type() int¶
Vraća pozadinsku pohranu toka:
FILE_STREAMza tok datoteke,MEMORY_STREAMza memorijski tok.
- is_closed() bool¶
Vraća
Trueako je nad ovim objektom pozvana metodaclose(). Nakon zatvaranja tok izazivaOSError("Stream closed")pri svakom daljnjem čitanju/zapisivanju/pomicanju.
- count() int¶
Vraća broj sličica koje su trenutno pohranjene u toku. Za tokove datoteka ovo raste kako
write()dodaje sličice; za memorijske tokove ovo je fiksno u trenutku konstrukcije.
- version() int | None¶
Vraća verziju formata na disku za tokove datoteka (
10zaV1.0,11zaV1.1,20zaV2.0). VraćaNoneza memorijske tokove.
- buffer_size() int | None¶
Vraća veličinu međuspremnika piksela po utoru u bajtovima za memorijske tokove (veličina utora umanjena za interno knjigovodstveno zaglavlje
Image). VraćaNoneza tokove datoteka. Koristite ovo zajedno scount()kako biste provjerili hoće li određena veličina sličice stati.
U/I¶
- write(img: Image) ImageIO¶
Dodaje (tok datoteke) ili pohranjuje na pomaku (memorijski tok)
imgi povećavaoffset()za jedan.Za tokove datoteka datoteka raste kako se dodaju sličice. Zapisivanje na pomaku koji nije kraj skraćuje ostatak datoteke pa se broj može smanjiti.
Za memorijske tokove sličica se zapisuje u trenutni utor; zapisivanje izvan posljednjeg utora izaziva
EOFError("End of stream"), a zapisivanje sličice veće odbuffer_size()izazivaValueError("Invalid frame size").Vraća
selfkako bi se pozivi mogli ulančati.
- read(copy_to_fb: bool = True, *, loop: bool = True, pause: bool = True) Image | None¶
Čita sličicu na trenutnom pomaku
offset(), povećava pomak i vraća novu sličicuImage. Zrcali reprodukcijsku polovicu metodewrite().copy_to_fb– kada jeTrue(zadano) dekodirana sličica smješta se u međuspremnik slike kamere (isto mjesto na kojem završavacsi.CSI.snapshot()), pa je vraćena slikaImageiscrtljiva kroz pregled u IDE-u. Kada jeFalse, sličica se umjesto toga dodjeljuje na MicroPython hrpi.loop(samo tokovi datoteka) – kada jeTrue(zadano) čitanje iza posljednje sličice premata natrag na prvu sličicu i nastavlja. Kada jeFalse, poziv vraćaNonečim se dosegne kraj datoteke.pause– kada jeTrue(zadano) poziv blokira dok ne protekne izvorno snimljeni međusličični interval, pa reprodukcija teče izvornom brzinom sličica snimke. Postavite naFalseza reprodukciju što je brže moguće.
- seek(offset: int) ImageIO¶
Pomiče
offset()na sličicuoffset.offsetmora biti nenegativan; pomaci memorijskog toka moraju također biti manji odcount().Pomaci u toku datoteke prolaze kroz datoteku sličicu po sličicu od početka jer su blokovi sličica promjenjive veličine – za velike skokove očekujte vrijeme O(offset).
Vraća
selfkako bi se pozivi mogli ulančati.
- sync() ImageIO¶
Ispražnjava neizvršena zapisivanja na disk za tokove datoteka (poziva
syncosnovnog datotečnog sustava). Bez učinka za memorijske tokove.Vraća
selfkako bi se pozivi mogli ulančati.
- close() None¶
Zatvara tok. Oslobađa memorijski međuspremnik (memorijski tokovi) ili zatvara datoteku (tokovi datoteka). Nakon
close()objektImageIOne može se ponovno koristiti; naknadne operacije izazivajuOSError("Stream closed"). Dvostruki pozivclose()nema učinka.Tok
ImageIOtakođer se automatski zatvara kada ga sakupljač smeća ukloni (pri konstrukciji registrira finalizator).
Konstante¶