class ImageIO – ImageIO-objekti¶
ImageIO-luokka tallentaa ja toistaa Image-kehysten virtoja OpenMV:n natiivissa levymuodossa. Yksi virta voi sisältää heterogeenisiä kehyksiä (eri pikseliformaatit / koot) ja tallentaa kullekin kehysten välisen aikavälin, joten toisto palauttaa alkuperäisen kehysnopeuden.
Taustasäilöjä on kaksi:
Tiedostovirta – kehykset luetaan tiedostosta / lisätään tiedoston perään tiedostojärjestelmässä. Tiedosto alkaa 16-tavuisella maagisella otsikolla
OMV IMG STR Vx.y, jota seuraavat kehyskohtaiset lohkot. Nykyinen kirjoittaja tuottaa muodonV2.0; vanhemmatV1.0- jaV1.1-tiedostot ovat edelleen luettavissa.Muistivirta – kehykset luetaan / kirjoitetaan kiinteäkokoisesta RAM-puskurista, joka varataan luontihetkellä. Hyödyllinen kehysten kierrättämiseen suodattimien läpi, jotka tarvitsevat tallenteen ilman tiedostojärjestelmän käyttöä.
- class image.ImageIO(path: str | Tuple[int, int, int], mode: str | int)¶
Luo
ImageIO-virta.Jos
pathon merkkijono, kyseiseen polkuun avataan tiedostovirta.modeon oltava jokin seuraavista:Jos
pathon 3-monikko(w, h, pixformat), varataan muistivirta.modeon tällöin kokonaisluku, joka kertoo etukäteen varattavien kehyspaikkojen määrän. Puskuri mitoitetaancountkehykselle kokoa(w, h, pixformat)eikä sen anneta kasvaa luonnin jälkeen.pixformaton jokin seuraavista:image.BINARY,image.GRAYSCALE,image.RGB565,image.BAYER,image.YUV422,image.JPEGtaiimage.PNG. Pakatuille formaateille (image.JPEG,image.PNG) paikkakohtainen koko arvioidaan arvolla 2 bpp; arviota suuremmat kehykset aiheuttavatValueErrorwrite()-kutsun yhteydessä.Tarkastelu¶
- type() int¶
Palauttaa virran taustasäilön:
FILE_STREAMtiedostovirralle,MEMORY_STREAMmuistivirralle.
- is_closed() bool¶
Palauttaa
True, jos tälle objektille on kutsuttuclose(). Sulkemisen jälkeen virta aiheuttaaOSError("Stream closed")kaikissa jatkossa tehtävissä luku-/kirjoitus-/siirtotoiminnoissa.
- count() int¶
Palauttaa virtaan tällä hetkellä tallennettujen kehysten määrän. Tiedostovirroissa tämä kasvaa, kun
write()lisää kehyksiä; muistivirroissa tämä on kiinteä luontihetkellä.
- offset() int¶
Palauttaa nykyisen kehysindeksin.
read()jawrite()kasvattavat sitä,seek()nollaa sen.
- version() int | None¶
Palauttaa tiedostovirtojen levymuodon version (
10muodolleV1.0,11muodolleV1.1,20muodolleV2.0). PalauttaaNonemuistivirroille.
I/O¶
- write(img: Image) ImageIO¶
Lisää (tiedostovirta) tai tallentaa siirtymäkohtaan (muistivirta) kehyksen
imgja kasvattaaoffset()-arvoa yhdellä.Tiedostovirroissa tiedosto kasvaa, kun kehyksiä lisätään. Kirjoittaminen muuhun kuin lopun siirtymäkohtaan typistää tiedoston loppuosan, joten määrä voi pienentyä.
Muistivirroissa kehys kirjoitetaan nykyiseen paikkaan; viimeisen paikan ohi kirjoittaminen aiheuttaa
EOFError("End of stream")jabuffer_size()-kokoa suuremman kehyksen kirjoittaminen aiheuttaaValueError("Invalid frame size").Palauttaa
self, jotta kutsut voidaan ketjuttaa.
- read(copy_to_fb: bool = True, *, loop: bool = True, pause: bool = True) Image | None¶
Lukee kehyksen nykyisestä
offset()-kohdasta, kasvattaa siirtymää ja palauttaa uudenImage-objektin. Vastaawrite()-metodin toistopuolta.copy_to_fb– kunTrue(oletus), dekoodattu kehys sijoitetaan kameran kehyspuskuriin (samaan paikkaan, johoncsi.CSI.snapshot()päätyy), joten palautettuImageon piirrettävissä IDE:n esikatselun kautta. KunFalse, kehys varataan sen sijaan MicroPython-keosta.loop(vain tiedostovirrat) – kunTrue(oletus), viimeisen kehyksen ohi luettaessa siirrytään takaisin ensimmäiseen kehykseen ja jatketaan. KunFalse, kutsu palauttaaNoneheti, kun tiedoston loppu saavutetaan.pause– kunTrue(oletus), kutsu estyy, kunnes alun perin tallennettu kehysten välinen aikaväli on kulunut, joten toisto etenee tallenteen natiivilla kehysnopeudella. AsetaFalsemahdollisimman nopeaa toistoa varten.
- seek(offset: int) ImageIO¶
Siirtää
offset()-kohdan kehykseenoffset.offsetei saa olla negatiivinen; muistivirran siirtymien on lisäksi oltava pienempiä kuincount().Tiedostovirran siirtymät kulkevat tiedoston kehys kerrallaan alusta lähtien, koska kehyslohkot ovat vaihtelevankokoisia – odota O(offset)-aikaa suurille hyppäyksille.
Palauttaa
self, jotta kutsut voidaan ketjuttaa.
- sync() ImageIO¶
Huuhtelee odottavat kirjoitukset levylle tiedostovirroille (kutsuu taustalla olevaa tiedostojärjestelmän
sync-toimintoa). Ei tee mitään muistivirroille.Palauttaa
self, jotta kutsut voidaan ketjuttaa.
- close() None¶
Sulkee virran. Vapauttaa muistipuskurin (muistivirrat) tai sulkee tiedoston (tiedostovirrat).
close()-kutsun jälkeenImageIO-objektia ei voi käyttää uudelleen; seuraavat toiminnot aiheuttavatOSError("Stream closed").close()-kutsuminen kahdesti ei tee mitään.ImageIOsuljetaan myös automaattisesti, kun se kerätään roskankeruussa (se rekisteröi viimeistelijän luontihetkellä).
Vakiot¶