v5.0.0

v5.0.0 büyük bir sürümdür. Öne çıkanlar: baştan inşa edilen OpenMV Protocol V2 ana bilgisayar bağlantısı, çok kameralı kartlara ölçeklenen sınıf tabanlı bir csi kamera API’si, çalıştırılabilir bir simülatör hedefi, MoveNet tek-poz tahmini, MicroPython 1.28 ve kapsamlı bir kamera, ML ve ToF düzeltmeleri paketi. Ayrıca bir dizi geriye dönük uyumsuz API değişikliği de getirir — v4.8.1’den bu yana kullanıcıya görünen her değişiklik, tam olarak nasıl geçiş yapılacağıyla birlikte aşağıda listelenmiştir.

Öne çıkanlar

  • OpenMV Protocol V2. Ana bilgisayar/IDE bağlantısı baştan inşa edildi: çerçevelenmiş, sıralı, CRC denetimli ve stdio, akış önizlemesi ve kullanıcı verisi için çoğullanmış kanallara sahip. Yeni bir protocol modülü, betiklerin kendi aktarımlarını ve veri kanallarını oluşturmasına olanak tanır. Bkz. protokol modülü değişiklikleri.

  • Sınıf tabanlı csi kamera API’si. import sensor artık import csi / csi.CSI olur ve yerel çok kameralı desteğe sahiptir. Bkz. csi geçişi.

  • Simülatör hedefi. Aygıt yazılımı (firmware) artık Arm FVP / QEMU simülatörü (MPS2/MPS3) altında derlenip çalışır; NPU, ROMFS ve PSRAM emülasyonu dahil — görüş ve ML betikleri hiçbir donanım bağlı olmadan çalıştırılabilir.

  • MoveNet poz tahmini. Yeni bir MoveNet son işlemcisi ve OpenMV AE3 ile N6 üzerinde paketlenmiş bir movenet_singlepose_192.tflite modeli.

  • MicroPython 1.28 ve ulab 6.12.0, ST Edge AI 4.0 araçları ve dışsallaştırılmış OpenMV SDK (bkz. derleme / araç değişiklikleri).

Yeni özellikler

  • The protocol modülü — Python’dan özel aktarımlar ve veri kanalları oluşturun: protocol.init(), protocol.register(), protocol.is_active() ve send_event() metoduna sahip bir protocol.ProtocolChannel sınıfı, ayrıca CHANNEL_FLAG_* ve CHANNEL_ID_* sabitleri. Nihai protocol.init() imzası protokol modülü değişiklikleri bölümünde belgelenmiştir.

  • protocol.CBORChannel — adlandırılmış alanları görüntüleme bileşenleri (etiket, derinlik) ve etkileşimli denetimlerle (aç/kapa, kaydırıcı, seçim) birlikte CBOR’a serileştiren dondurulmuş bir protocol uzantı paketi.

  • Ana bilgisayar belleği ve akış iç gözlemi — yeni bir SYS_MEMORY protokol komutu, havuz başına çalışma zamanı bellek istatistiklerini IDE’ye sunar ve yeni bir STREAM_SOURCE akış ioctl’i, ana bilgisayarın çok kameralı kartlarda hangi kameranın önizlemeyi beslediğini seçmesine olanak tanır (protokol sürümü 1.0.1).

  • Çok kameralı akışcsi.CSI, hangi sensörün IDE önizlemesini beslediğini seçen bir stream= argümanı alır; akış çerçeve başlığı artık EMA ile yumuşatılmış bir FPS taşır, böylece IDE çerçeve hızını clock.fps() standart kodu olmadan gösterir. Bkz. csi geçişi ve csi takip değişiklikleri.

  • GenX320 olay sensörü — yeni bir Uzamsal-Zamansal Kontrast filtresi (csi.GENX320_STC_DISABLE, csi.GENX320_STC_ONLY, csi.GENX320_STC_TRAIL_ONLY ve csi.GENX320_STC_TRAIL modlarıyla birlikte csi.IOCTL_GENX320_SET_STC) ve ham olay okuma (csi.IOCTL_GENX320_READ_EVENTS_RAW), yeni örnek betiklerle birlikte.

  • MoveNet — 17 eklemli bir COCO anahtar nokta dizisiyle birlikte ((x, y, w, h), score, keypoints) döndüren yeni bir MediaPipe tek-poz son işlemcisi (threshold, nms_threshold, nms_sigma kwarg’ları); bir movenet_singlepose_192.tflite modeli ve örneği AE3 ile N6 üzerinde paketlenmiştir.

  • ml.utils.draw_predictions() — etiket başına güven değerini ekleyen yeni bir isteğe bağlı scores= argümanı; yazı tipi ve kutu çizgisi artık görüntü genişliğine göre otomatik ölçeklenir ve yeni bir format="point" modu, merkez noktası/tepe tespit edicileri için bir merkez işaretçisi çizer.

  • Yeni display.TVDisplay sınıfı (genel bir ioctl() ile) bağımsız tv modülünün yerini alır. Bkz. display modülü değişiklikleri.

  • Yeni bir find_line_segments() tespit edicisi (ED-Lines) — artık tüm derlemelerde mevcuttur ve yeni bir threshold= argümanına sahiptir. Bkz. image modülü değişiklikleri.

Diğer değişiklikler ve iyileştirmeler

  • MicroPython, v4.8.1 tabanından 1.28.0’a güncellendi. H5/H7/N6 üzerinde yüksek hızlı SD kart modu, düşük güç modunda AHB5 saat sinyali ve OPENMV_AE3 üzerinde GPIO olarak denetlenebilir JTAG pinleri eklendi.

  • ulab 6.12.0’a güncellendi — ndarray’ler üzerinde yerel % operatörü (ml.utils.mod() yardımcısı kaldırıldı; bkz. ML kütüphanesi değişiklikleri).

  • ST Edge AI araçları 4.0’a güncellendi — cihaz üzerinde ST model derlemesini ve dağıtımını etkiler.

  • ml.Modelload_to_fb anahtar sözcük argümanı kaldırıldı; model belleği artık birleşik ayırıcı tarafından otomatik olarak yönetilir.

  • image.Image.scale() yerinde — bir görüntüyü yerinde büyütmek (örneğin img.scale(x_scale=2.0, y_scale=2.0)) artık başarısız olmak yerine çerçeve arabelleğini (frame buffer) sığacak şekilde büyütür.

  • Daha büyük stdio arabelleği — IDE’ye giden varsayılan metin arabelleği OpenMV 2/3/4, Nicla Vision, AE3 ve N6 üzerinde 512’den 1024 bayta çıkarıldı, böylece daha büyük print() patlamaları kesilmez.

  • Daha akıcı ana bilgisayar olay akışı — ana bilgisayara giden stdout NOTIFY olayları, halka arabelleği su işaretini aşan her print() için bir tane yerine, her ana bilgisayar okuması başına en fazla bir tane olacak şekilde kısıtlanır.

  • Kesilebilir uzun işlemler — uzun görüntü çizme, GPU (Nema/Dave2D) ve NPU bekleme döngüleri artık olayları belirli bir aralıkta işler, böylece betikler ağır işler sırasında IDE’nin Stop düğmesine duyarlı kalır.

Hata düzeltmeleri

Kamera ve sensörler:

  • find_apriltags() artık D-cache/GPU kartlarında (N6, AE3) sonuçları bozmuyor ve artık AE3 üzerinde çalışıyor.

  • Piksel formatları değiştirildikten sonra STM32 N6 ISP’den gelen Bayer görüntü çıktısı düzeltildi.

  • Parlak sahnelerde yeşil otomatik beyaz dengesi taşması ve başlatılmamış ilk çerçeve AWB istatistikleri durumu düzeltildi; daha geniş bir gama/kontrast/parlaklık aralığı için STM32 ISP gama sınırlaması (32’den 63’e) yükseltildi.

  • PS5520 otomatik pozlaması artık parlak ışıkta salınmıyor; PAG7936 AEC/AGC davranışı yeniden tasarlandı (birleşik denetim, düzeltilmiş kazanç tavanı).

  • OV5640 otomatik odak aygıt yazılımı (firmware) yüklemesi Portenta/Nicla üzerinde geri yüklendi (MIMXRT I2C SUSPEND düzeltmesi).

  • Çerçeve hızı sınırı JPEG yakalamayla birleştirildiğinde oluşan bir kamera yakalama kilitlenmesi düzeltildi (STM32).

  • GenX320 csi.IOCTL_GENX320_READ_EVENTS_RAW okumaları artık IDE önizlemesini bozmuyor.

  • FLIR Lepton csi.IOCTL_LEPTON_SET_MODE, csi.CSI.ioctl() üzerinden tek bir argümanla çağrıldığında artık çalışıyor.

Görüntü işleme:

  • Bir maske sağlandığında draw_image() / blend() alfa harmanlama düzeltildi.

  • 1 bitlik (BINARY) PNG kodlama/kod çözme bit sıralaması ve 1 bitten gri tonlama kod çözme düzeltildi.

  • mjpeg.Mjpeg kayıt süresi/FPS meta verisi düzeltildi.

  • Küçük yığınlı kartlarda (OpenMV M7) yazılımsal JPEG kod çözme yığın taşması düzeltildi.

  • ARM olmayan ana bilgisayarlarda (simülatör) JPEG/PNG dosya formatı otomatik algılaması düzeltildi.

Time-of-Flight:

ML ve sistem:

  • N6 üzerinde çıkarım kesildiğinde NPU artık doğru şekilde temizleniyor.

  • N6 üzerinde derin uyku / bekleme uyandırması geri yüklendi; AE3 önyükleyiciye (bootloader) atlama takılması düzeltildi.

  • Yazılımsal sıfırlamada (STM32 Nema GPU) bellek sızıntıları ve erken toplanan bir yardımcı çerçeve arabelleği (frame buffer) düzeltildi.

  • Özel Python protokol kanalları artık yazılımsal yeniden başlatmada hayatta kalıyor, USB aktarımı veri yolu sıfırlamasından / takılan uç noktalardan kurtuluyor ve USB SOF kesme taşması düzeltildi.

Donanım ve kart desteği

  • OpenMV N6 — Ethernet etkinleştirildi (kablolu ağ); NPU AXI SRAM (1.75 MB), çıkarımlar arasında daha fazla RAM için paylaşılan geçici bir havuzla birleştirildi; derin uyku/bekleme uyandırması; ROMFS’te paketlenmiş TFLite modelleri ve Haar basamaklı sınıflandırıcıları.

  • OpenMV AE3 — ROMFS’te paketlenmiş modeller ve basamaklı sınıflandırıcılar; aygıt yazılımına (firmware) dondurulmuş cbor2.

  • Alif (AE3, N6) — düşük güçlü machine.RTC uyandırması.

  • Yüksek çözünürlüklü AprilTags — AE3, Arduino Giga ve Arduino Portenta H7 üzerinde tam sensör çözünürlüğünde find_apriltags().

  • Simülatör hedefleri — MPS2_AN500 / MPS3_AN547 (Arm FVP / QEMU), NPU, ROMFS ve PSRAM emülasyonuyla.

Geriye dönük uyumsuz API değişiklikleri

v4.8.1 ile v5.0.0 arasındaki kullanıcıya görünen API kırılmaları. Kapsam: modules/ içindeki Python C-modülleri ve scripts/libraries/ içindeki Python kütüphaneleri.

Her değişiklik etkisiyle etiketlenmiştir:

  • major — çoğu betiğin düzenlenmesi gerekir.

  • minor — dar kapsamlı API; yalnızca onu kullanan betikleri etkiler.

  • behavior — aynı API, farklı sonuçlar; ince ayarlı betikleri yeniden kontrol edin.

  • tooling — yalnızca kaynaktan derlemeyi / alt akış çatallarını (fork) etkiler.

Değişiklikler bu sırayla etkiye göre gruplanmıştır — önce major, ardından minor, behavior ve tooling. Yalnızca kodunuzu taşımak istiyorsanız, yoğunlaştırılmış bir yapılacaklar listesi için sonundaki geçiş kontrol listesine atlayın. Her commit özeti, GitHub üzerindeki diff’ine bağlanır.

sensor yerine csi geldi (major)

Her resmi örnek, import sensor yerine import csi kullanacak şekilde yeniden yazıldı. Eski modül düzeyindeki işlevsel API (sensor.reset(), sensor.set_pixformat(), …), birden fazla kameraya sahip kartlara (csi0, csi1, …) doğal olarak ölçeklenen ve tüm yeni özellikler (stream= kwarg’ı, çok sensörlü akış, …) için gerekli olan sınıf tabanlı csi.CSI API’si ile değiştirildi.

sensor qstr’i, geriye dönük uyumlu aygıt yazılımı (firmware) derlemeleri için hâlâ modules/py_csi.c içinde bağlıdır, ancak yeni özellikler kazanmayacak ve tüm örnekler, belgeler ve kütüphane kodu artık csi varsayar.

Commit’ler: 945c5853c, 61f835b7e

Modülden sınıfa

Önce (sensor):

import sensor
sensor.reset()
sensor.set_pixformat(sensor.RGB565)
sensor.set_framesize(sensor.QVGA)
sensor.skip_frames(time=2000)
img = sensor.snapshot()

Sonra (csi):

import csi
csi0 = csi.CSI()
csi0.reset()
csi0.pixformat(csi.RGB565)
csi0.framesize(csi.QVGA)
csi0.snapshot(time=2000)
img = csi0.snapshot()

Setter/getter çiftleri birleşik erişimcilere indirgendi

Yeni API’de argüman olmadan çağrılan bir metot geçerli değeri döndürür; bir değer ile çağrıldığında onu ayarlar. set_*/get_* önekleri kaldırıldı. Metot adları ayrıca gereksiz olduğu yerlerde ing son ekini de yitirdi (windowingwindow). Yeni API sütunu, referans belgelerine bağlanır.

sensor (eski)

csi.CSI (yeni)

set_pixformat(fmt) / get_pixformat()

pixformat([fmt])

set_framesize(sz) / get_framesize()

framesize([sz])

set_framerate(fps) / get_framerate()

framerate([fps])

set_windowing(roi) / get_windowing()

window([roi])

set_framebuffers(n) / get_framebuffers()

framebuffers([n])

set_gainceiling(g)

gainceiling([g])

set_brightness(v)

brightness([v])

set_contrast(v)

contrast([v])

set_saturation(v)

saturation([v])

set_quality(v)

quality([v])

set_colorbar(b)

colorbar([b])

set_special_effect(e)

special_effect([e])

set_lens_correction(...)

lens_correction(...)

set_hmirror(b) / get_hmirror()

hmirror([b])

set_vflip(b) / get_vflip()

vflip([b])

set_transpose(b) / get_transpose()

transpose([b])

set_auto_rotation(b) / get_auto_rotation()

auto_rotation([b])

set_auto_gain(b, [db, ceiling]) / get_gain_db()

auto_gain(...) / gain_db()

set_auto_exposure(b, [us]) / get_exposure_us()

auto_exposure(...) / exposure_us()

set_auto_whitebal(b, [rgb]) / get_rgb_gain_db()

auto_whitebal(...) / rgb_gain_db()

set_auto_blc(b, [regs]) / get_blc_regs()

auto_blc(...) / blc_regs()

set_color_palette(p) / get_color_palette()

color_palette([p])

set_frame_callback(cb)

frame_callback(cb)

set_vsync_callback(cb)

vsync_callback(cb)

get_id()

cid()

Doğrudan karşılığı olmayan işlevler

sensor (kaldırıldı)

Bunun yerine ne kullanılmalı

sensor.alloc_extra_fb(w, h, pixfmt) / sensor.dealloc_extra_fb()

image.Image (w, h, pixfmt) — sıradan, yığında ayrılan bir görüntü. Çerçeve arabelleği (frame buffer) artık kullanıcı arabellekleri için parçalanmıyor.

sensor.skip_frames(time=..., frames=...)

csi.CSI.snapshot() — atlama-çerçeveleri, time= / frames= argümanları aracılığıyla snapshot içine katlandı.

sensor.disable_delays(...) / sensor.disable_full_flush(...)

csi.CSI yapıcısına taşındı: csi.CSI(delays=False) / csi.CSI(fflush=False).

sensor.get_frame_available()

csi.CSI.readable()

sensor.get_fb()

Kaldırıldı. csi.CSI.snapshot() tarafından döndürülen görüntü kanonik tutamaçtır.

sensor.set_framebuffers(n, expand=True)

csi.CSI.framebuffers()expand argümanı kaldırıldı (bkz. csi takip değişiklikleri).

Yeni: csi.CSI üzerinde

  • csi.CSI(stream=True|False) — hangi CSI’nin önizleme çerçeve arabelleğini (frame buffer) beslediğini seçen, oluşturma anında bir seçici (anlık görüntü başına update= kwarg’ının yerini alır, bkz. csi takip değişiklikleri).

  • csi.CSI(cid=N) / csi.devices() — birden fazla görüntü sensörüne sahip kartlar için çoklu CSI desteği.

image modülü — imza elden geçirme (major)

image modülü, csi‘den sonra en geniş API değişikliğini gördü — çizim imzaları, sonuç nesneleri ve birkaç tespit edicinin tümü değişti.

Koordinat argümanları tuple olmalıdır

modules/py_image.c, mp_arg_parse_all üzerine yeniden yazıldı. Daha önce ayrı x, y, ... konumsal argümanları alan tüm çizim / piksel metotları artık bu koordinatların tek bir tuple içinde paketlenmesini gerektirir.

Commit’ler: d18bbc472, 0c60c94b9 (PR #3061)

Önce

Sonra

img.draw_arrow(x0, y0, x1, y1, color=...)

img.draw_arrow((x0, y0, x1, y1), color=...)

img.draw_line(x0, y0, x1, y1, ...)

img.draw_line((x0, y0, x1, y1), ...)

img.draw_cross(x, y, ...)

img.draw_cross((x, y), ...)

img.draw_circle(x, y, r, ...)

img.draw_circle((x, y, r), ...)

img.draw_rectangle(x, y, w, h, ...)

img.draw_rectangle((x, y, w, h), ...)

img.draw_string(x, y, "txt", ...)

img.draw_string((x, y), "txt", ...)

img.draw_ellipse(x, y, rx, ry, rot, ...)

img.draw_ellipse((x, y, rx, ry, rot), ...)

img.flood_fill(x, y, ...)

img.flood_fill((x, y), ...)

img.get_pixel(x, y, rgbtuple=...)

img.get_pixel((x, y), rgbtuple=...)

img.set_pixel(x, y, color)

img.set_pixel((x, y), color)

Tümü image.Image metotlarıdır.

Sonuç nesneleri attrtuple’a dönüştürüldü

Bu türler artık MicroPython attrtuple nesneleridir: similarity, statistics, percentile, threshold, line, circle, rect, qrcode, apriltag, datamatrix, barcode, displacement, kptmatch. Parantezsiz özniteliğe erişim artık kanoniktir.

Commit: 3399d302e

Önce (metot stili):

img.draw_cross(match.cx(), match.cy())
img.draw_rectangle(blob.rect())

Sonra (öznitelik stili):

img.draw_cross((match.cx, match.cy))
img.draw_rectangle(blob.rect)

blob ve histogram değişmedi — mevcut türlerini ve () erişimcilerini korurlar (bir attrtuple, bir blob’un tembel hesaplanan değerlerini veya bir histogramın argüman alan erişimcilerini ifade edemez).

find_features haar parametresi yeniden adlandırması

image.Image.find_features()scale_factor=, scale= olarak yeniden adlandırıldı.

Commit: be4c5cd73

get_regression — artık her zaman gürbüz, target_size eklendi

image.Image.get_regression() artık her zaman gürbüz (Theil-Sen) regresyonu kullanır. Eski hızlı en küçük kareler yolu kaldırıldı, bu yüzden robust= anahtar sözcüğü kalktı — eskiden robust=True gerektiren artık tek davranıştır. Yeni bir target_size=(w, h) kwarg’ı (varsayılan (80, 60)), O(N^2) Theil-Sen uydurmasından önce ROI’yi alan olarak küçülterek her zaman makul bir görüntü boyutunda çalışmasını sağlar; uydurulan çizgi uç noktaları kaynak koordinatlarına geri eşlenir. linear_regression_robust.py örneği silindi ve linear_regression_fast.py, linear_regression.py olarak yeniden adlandırıldı.

Commit’ler: c7c2e69a0, 0ff2afa72

find_line_segments — yeni algoritma

image.Image.find_line_segments() — eski LSD tespit edicisi ED-Lines ile değiştirildi ve yeni bir threshold=50 kwarg’ı kazandı. Daha önce ince ayarlanmış betiklerin çıktısı farklı olacaktır.

Commit’ler: 87da2a7b7, 2c47b5735

AprilTag kütüphanesi değiştirildi

image.Image.find_apriltags() — AprilTag tespit edicisi yeni bir uygulamayla değiştirildi. Aile kümesi değişti:

Commit: e813bada7

csi modülü takibi (minor)

csi geçişi üzerine daha küçük csi takip değişiklikleri.

snapshot(update=…) kaldırıldı

csi.CSI.snapshot() üzerindeki update kwarg’ı kalktı. Bir CSI cihazının önizleme çerçeve arabelleğini (frame buffer) beslemesini engellemek için, oluşturma anında devre dışı bırakın:

csi0 = csi.CSI(stream=False)                  # was: csi0.snapshot(update=False)
csi1.snapshot(blocking=False, image=fir_img)  # was: ...(update=False, ...)

Commit’ler: 9a8077827, 26b79a2c5

framebuffers() expand argümanı kaldırıldı

csi.CSI.framebuffers() — üçüncü konumsal argüman (expand) kalktı; imza artık framebuffers([count]).

Commit: 86cb3a5de

protocol modülü (minor)

Yalnızca ana bilgisayar bağlantısını doğrudan süren betikleri etkiler. Bkz. protocol.

timer_ms, poll_ms olarak yeniden adlandırıldı

protocol.init()timer_ms argümanı poll_ms olarak yeniden adlandırıldı.

protocol.init(..., poll_ms=10)   # was: timer_ms=10

Commit’ler: 8a0635e8c, 95a290607

protocol.poll() kaldırıldı

Protokol görevi artık dahili olarak zamanlanır. protocol.poll() çağrıları AttributeError fırlatır.

Commit: 8a0635e8c

soft_reboot yapılandırma argümanı kaldırıldı

protocol.init()soft_reboot argümanı kalktı. Tüm mevcut aktarımlar yazılımsal yeniden başlatmaları tolere eder, bu nedenle davranış artık koşulsuzdur.

Commit: 0bf766aa2

display modülleri (minor)

TV çıkışı artık bağımsız tv modülü yerine bir display.TVDisplay nesnesi üzerinden gider. display ayrıca genel bir ioctl() kazandı.

Commit’ler: f0accb389, 1a5a87121, 920c097a0, 9eac55098

tof modülü (behavior)

Öncekiyle aynı API; varsayılanlar ve hata işleme değişti. Bkz. tof.

Varsayılan zaman aşımı değişti

tof.read_depth() ve tof.snapshot() (timeout=-1 ile çağrıldığında) artık süresiz beklemek yerine varsayılan olarak 100 ms‘dir. Eski davranışa ihtiyacınız varsa açık şekilde daha büyük bir değer geçirin.

Commit: b6772b80d

Otomatik kurtarma

Sürücü artık mesafe ölçümü/zaman aşımı hatalarında I2C veri yolunu ve sensörü donanımsal olarak sıfırlar. Örnekler artık istisna işleyicilerinde tof.reset() çağırmıyor — manuel kurtarma yapan kullanıcı kodu bunu kaldırmalıdır (yeni otomatik kurtarma ile çatışacaktır).

Commit’ler: b6772b80d, 80ffaa5c3

ML kütüphanesi (behavior)

Aynı API, farklı sayılar — ince ayarlı herhangi bir ML hattını yeniden kontrol edin.

Ön işleme artık mektup kutulamak (letterbox) yerine geriyor

Normalization artık image.SCALE_ASPECT_EXPAND (letterbox) yerine image.SCALE_ASPECT_IGNORE (germe) kullanıyor. NMS son işlemesi de bağımsız x/y ölçeklemeye geçti.

Not

Etki. YOLO tarzı tespit ediciler ve anahtar nokta regresörleri genellikle iyileşir. BlazeFace, BlazePalm, FaceLandmarks ve HandLandmarks örnekleri artık giriş ROI’sinde manuel bir kare kırpma gerektirir — örnek betikler güncellendi; özel kullanıcı kodu da aynısını yapmalıdır.

Commit: 68dc29a33

ml.utils.mod() yardımcısı kaldırıldı

ulab 6.12.0, ndarray’ler üzerinde % operatörünü yerel olarak destekler. ml.utils‘ten mod içe aktaran kod a % b kullanmalıdır.

Commit’ler: 35ece5728, 82fbd858c

Derleme / araçlar (tooling)

Bunların hiçbiri MicroPython betiklerini etkilemez. Aygıt yazılımını (firmware) kaynaktan derlemek artık harici OpenMV SDK‘yı (1.6.0, önceden ağaç içinde) gerektirir. Birkaç ağaç içi derleme aracı kaldırıldı ve N6, TinyUSB yığınına taşındı; alt akış çatalları (fork) aygıt yazılımı deposunun geçmişini gözden geçirmelidir — özellikle file_open() imzasının buffered argümanını kaldırması.

Geçiş kontrol listesi

v5.0.0’a temiz bir taşıma için tipik iş şudur:

  1. import sensor yerine import csi; csi0 = csi.CSI() koyun ve her set_*/get_* çağrısını csi.CSI erişimcisine çevirin (csi geçişi).

  2. img.draw_*, get_pixel() ve set_pixel() için koordinat argümanlarını tuple’lara sarın (image modülü değişiklikleri).

  3. Yeni deyimsel biçimi istiyorsanız attrtuple sonuç erişimcilerinden () kaldırın veya attrtuple’lar hâlâ çağrılabilir erişimcileri desteklediği için eski stili olduğu gibi bırakın (image modülü değişiklikleri).

  4. find_line_segments(), get_regression() ve herhangi bir find_apriltags() aile seçimini denetleyin (image modülü değişiklikleri).

  5. protocol.init() çağrılarında timer_mspoll_ms olarak yeniden adlandırın; protocol.poll() ve soft_reboot= kaldırın (protokol modülü değişiklikleri).

  6. ML iş akışları için: mektup kutulanmış (letterbox) giriş gerektiren herhangi bir modeli yeniden gözden geçirin (ML kütüphanesi değişiklikleri).