class ImageIO – ImageIO nesnesi¶
ImageIO sınıfı, OpenMV’nin yerel disk üzeri formatında Image çerçevelerinden oluşan akışları kaydeder ve oynatır. Tek bir akış heterojen çerçeveler (farklı piksel formatları / boyutlar) tutabilir ve her biri için çerçeveler arası aralığı kaydeder; böylece oynatma sırasında orijinal çerçeve hızı yeniden oluşturulur.
İki yedekleme deposu vardır:
Dosya akışı – çerçeveler dosya sistemindeki bir dosyadan okunur / dosyaya eklenir. Dosya, 16 baytlık
OMV IMG STR Vx.ysihirli başlığıyla başlar ve ardından çerçeve başına yığınlar gelir. Mevcut yazıcıV2.0üretir; eskiV1.0veV1.1dosyaları hâlâ okunabilir.Bellek akışı – çerçeveler, oluşturma zamanında ayrılan sabit boyutlu bir RAM arabelleğinden okunur / arabelleğe yazılır. Dosya sistemine dokunmadan bir kayıt gerektiren filtreler aracılığıyla çerçeveleri gidip gelmek (round-trip) için kullanışlıdır.
- class image.ImageIO(path: str | Tuple[int, int, int], mode: str | int)¶
Bir
ImageIOakışı oluşturur.pathbir string ise, o yolda bir dosya akışı açılır.modeşunlardan biri olmalıdır:pathbir 3’lü tuple(w, h, pixformat)ise, bir bellek akışı ayrılır. Bu durumdamode, önceden ayrılacak çerçeve yuvası sayısını veren tam sayıdır. Arabellek,(w, h, pixformat)boyutundacountçerçeve için boyutlandırılır ve oluşturulduktan sonra büyümesine izin verilmez.pixformatşunlardan biridir:image.BINARY,image.GRAYSCALE,image.RGB565,image.BAYER,image.YUV422,image.JPEGveyaimage.PNG. Sıkıştırılmış formatlar (image.JPEG,image.PNG) için yuva başına boyut 2 bpp olarak tahmin edilir; tahminden büyük çerçevelerwrite()sırasındaValueErroryükseltir.İnceleme¶
- type() int¶
Akışın yedekleme deposunu döndürür: dosya akışı için
FILE_STREAM, bellek akışı içinMEMORY_STREAM.
- is_closed() bool¶
Bu nesnede
close()çağrıldıysaTruedöndürür. Kapatıldıktan sonra akış, sonraki tüm okuma/yazma/arama işlemlerindeOSError("Stream closed")yükseltir.
- count() int¶
Akışta o anda depolanan çerçeve sayısını döndürür. Dosya akışlarında bu değer,
write()çerçeveler ekledikçe büyür; bellek akışlarında ise oluşturma zamanında sabittir.
- offset() int¶
Geçerli çerçeve indeksini döndürür.
read()vewrite()ile artırılır,seek()ile sıfırlanır.
- version() int | None¶
Dosya akışları için disk üzeri format sürümünü döndürür (
V1.0için10,V1.1için11,V2.0için20). Bellek akışları içinNonedöndürür.
- buffer_size() int | None¶
Bellek akışları için yuva başına piksel arabelleği boyutunu bayt cinsinden döndürür (yuva boyutundan dahili
Imagedefter tutma başlığı çıkarılmış olarak). Dosya akışları içinNonedöndürür. Belirli bir çerçeve boyutunun sığıp sığmayacağını kontrol etmek için bunucount()ile birlikte kullanın.
G/Ƕ
- write(img: Image) ImageIO¶
img‘yi ekler (dosya akışı) veya geçerli ofsette depolar (bellek akışı) veoffset()değerini bir artırır.Dosya akışlarında, çerçeveler eklendikçe dosya büyür. Sonda olmayan bir ofsette yazmak, dosyanın geri kalanını kısaltır; böylece sayım küçülebilir.
Bellek akışlarında çerçeve geçerli yuvaya yazılır; son yuvanın ötesine yazmak
EOFError("End of stream")vebuffer_size()değerinden büyük bir çerçeve yazmakValueError("Invalid frame size")yükseltir.Çağrıların zincirlenebilmesi için
selfdöndürür.
- read(copy_to_fb: bool = True, *, loop: bool = True, pause: bool = True) Image | None¶
Geçerli
offset()konumundaki çerçeveyi okur, ofseti artırır ve yeniImage‘i döndürür.write()‘in oynatma yarısını yansıtır.copy_to_fb–Trueolduğunda (varsayılan), kodu çözülen çerçeve kamera çerçeve arabelleğine (frame buffer) yerleştirilir (csi.CSI.snapshot()‘ın indiği yerle aynı yer), böylece döndürülenImageIDE önizlemesi üzerinden çizilebilir.Falseolduğunda çerçeve bunun yerine MicroPython yığınına (heap) ayrılır.loop(yalnızca dosya akışları) –Trueolduğunda (varsayılan), son çerçevenin ötesini okumak ilk çerçeveye geri döner ve devam eder.Falseolduğunda, dosyanın sonuna ulaşıldığında çağrıNonedöndürür.pause–Trueolduğunda (varsayılan), çağrı, başlangıçta kaydedilen çerçeveler arası aralık geçene kadar bloklanır; böylece oynatma kaydın yerel çerçeve hızında çalışır. Mümkün olduğunca hızlı oynatma içinFalseolarak ayarlayın.
- seek(offset: int) ImageIO¶
offset()değerinioffsetçerçevesine taşır.offsetnegatif olmamalıdır; bellek akışı ofsetleri ayrıcacount()değerinden küçük olmalıdır.Çerçeve yığınları değişken boyutlu olduğundan, dosya akışı aramaları dosyayı baştan başlayarak çerçeve çerçeve dolaşır – büyük atlamalarda O(offset) süre bekleyin.
Çağrıların zincirlenebilmesi için
selfdöndürür.
- sync() ImageIO¶
Dosya akışları için bekleyen yazmaları diske boşaltır (alttaki dosya sisteminin
syncişlemini çağırır). Bellek akışları için işlem yapmaz.Çağrıların zincirlenebilmesi için
selfdöndürür.
- close() None¶
Akışı kapatır. Bellek arabelleğini serbest bırakır (bellek akışları) veya dosyayı kapatır (dosya akışları).
close()çağrıldıktan sonraImageIOnesnesi yeniden kullanılamaz; sonraki işlemlerOSError("Stream closed")yükseltir.close()çağrısını iki kez yapmak işlem yapmaz.Bir
ImageIO, çöp toplandığında da otomatik olarak kapatılır (oluşturma sırasında bir sonlandırıcı kaydeder).
Sabitler¶