v3.0.0

v3.0.0, büyük v2 → v3 sürümüdür. OpenMV Cam M7 (STM32F7) ile yeni nn CMSIS-NN sinir ağı modülünü (eski sabit kodlanmış find_number() / classify_object() metotlarının yerini alır) sunar, MT9V034 global shutter ve FLIR Lepton sensör desteği ile sensor.WVGA çerçeve boyutlarını ekler ve çekirdeği MicroPython 1.9.4‘e günceller. Birkaç image / sensor / WiFi davranışı değişti — aşağıdaki kırıcı değişikliklere göz atın.

Öne çıkanlar

  • OpenMV Cam M7 — yeni STM32F7 kartı.

  • nn modülü — CMSIS-NN çıkarımı: nn.load(), Net.forward(), Net.search(), bir model dönüştürücü ve örneklerle birlikte.

  • Yeni sensörler — MT9V034 global shutter (FSIN tetiklemeli) ve FLIR Lepton.

  • MicroPython 1.9.4 çekirdek güncellemesi.

  • Kırıcı: sabit kodlanmış image.find_number() / image.classify_object() kaldırıldı, sensor.sleep() artık istisna fırlatıyor, WINC soketleri gerçek bayt sayılarını döndürüyor, image.binary() yeni bir görüntü döndürüyor ve find_apriltags() 64K piksel ile sınırlandırıldı — kırıcı değişikliklere bakın.

Yeni özellikler

  • nn — yeni bir CMSIS-NN sinir ağı modülü: nn.load(path), Net.forward(img, roi=, softmax=, dry_run=) (0.0–1.0 arası float değerler döndürür), çok ölçekli/konumlu tespit için Net.search() ve Net.test(), ayrıca bir CMSIS-NN model dönüştürücü (nn_convert.py / nn_quantizer.py), birlikte gelen CIFAR-10 / LeNet / smile modelleri ve NN / NN-search örnek betikleri.

  • Sensörler — OpenMV 4 üzerinde MT9V034 global shutter desteği (FSIN tetiklemeli anlık görüntü), Lepton anlık görüntü ile güncellenmiş bir FLIR Lepton sürücüsü ve yeni sensor.WVGA (720x480) / sensor.WVGA2 (752x480) çerçeve boyutları.

  • Görüntülemeimage.find_circles() r_min / r_max / r_step anahtar sözcüklerini kazandı (daha hızlı Hough), find_keypoints() ve Haar find_features() artık RGB görüntüleri kabul ediyor ve image.compress() / JPEG kodlama artık ikili (bitmap) görüntüleri destekliyor.

  • Önyüklemeboot.py artık USB başlatmadan önce çalışıyor, böylece USB modunu (örn. HID) geçersiz kılabiliyor.

  • Örnekler — küçük/yüksek çözünürlüklü AprilTag örnekleri, bir I2C LIDAR-Lite V3 örneği ve veri kümesi araçları (augment_images.py / make_patches.py) eklendi.

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

  • Birlikte gelen MicroPython 1.9.4’e güncellendi (bir pyexec ayrıştırma/derleme/yürütme geri alımı ve PendSV düzeltmesiyle); daha açık fb_alloc / xalloc bellek yetersizliği hata mesajları; ağ yüklemesi sırasında nn printf gürültüsü bastırıldı; depo yeniden düzenlendi (örnekler → scripts/, araçlar → tools/, Haar kademeleri → ml/). nn modülü OpenMV 2 üzerinde kullanılamaz (yetersiz flash bellek).

Hata düzeltmeleri

Görüntüleme:

  • x≤0 için fast_atan2f düzeltildi (önceden her zaman 0 — nokta (blob) / çizgi / anahtar nokta açılarını yeniden denetleyin), find_apriltags() bellek yönetimi (OOM durumunda içerik kaybı ve hatalı bir realloc), ikili/bitmap bpp başına satır işaretçileri (bozuk ikili sonuçlar), bir ROI ile find_edges(EDGE_CANNY), TO_GS_PIXEL makrosu (integral / morfoloji), gri tonlama (bpp==0) çerçeveleri için bitmap/JPEG akışı, anahtar nokta/nokta (blob) listesi pop_front ve match_descriptor sonuçları düzeltildi.

Sistem ve kamera:

  • USB HID arayüzü/uç nokta numaraları, XCLK frekansının çalışma zamanında dinamik olarak değiştirilmesi, Net.forward() işlevinin doğru sayıda çıktı döndürmesi ve betik ayrıştırmasını kesintiye uğratırken oluşan bir hardfault düzeltildi.

Donanım ve kart desteği

  • OpenMV Cam M7 (STM32F7) — yeni kart.

  • MT9V034 global shutter sensörü (OpenMV 4, FSIN tetiklemeli).

  • FLIR Lepton — anlık görüntü desteğiyle güncellenmiş sürücü.

Kırıcı API değişiklikleri

v2.9.0 ile v3.0.0 arasındaki kullanıcıya görünür 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 etkisine göre etiketlenmiştir:

  • büyük — özelliği kullanan çoğu betiği etkiler; kodu taşımanız gerekecek.

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

  • davranış — aynı API, farklı sonuçlar; ince ayarlı betikleri yeniden denetleyin.

Değişiklikler bu sırayla etkilerine göre gruplandırılmıştır. Sadece kodunuzu taşımak istiyorsanız sondaki geçiş kontrol listesine atlayın. Her commit özeti, GitHub üzerindeki diff’ine bağlanır.

image.find_number() / image.classify_object() kaldırıldı (büyük)

Sabit kodlanmış image.find_number() (LeNet) ve image.classify_object() (CMSIS CNN) metotları, yeni nn modülü lehine kaldırıldı. Bunları net = nn.load('/model.network'); out = net.forward(img) ile değiştirin.

Commit’ler: d151f7e38

sensor.sleep() / sensor.reset() hata durumunda istisna fırlatır (önemsiz)

sensor.sleep() ve sensor.reset() artık başarısızlık durumunda True / False döndürmek yerine bir istisna fırlatır. sensor.sleep() işlevinin boolean dönüş değerini denetleyen kodun bunun yerine çağrıyı try / except içine sarması gerekir.

Commit’ler: 7d16d008f

WINC soketleri gerçek bayt sayısını döndürür (davranış)

WINC1500 soketi send / recv / sendto / recvfrom metotları önceden her zaman 0 döndürüyordu; artık aktarılan gerçek bayt sayısını döndürüyorlar. 0 dönüşü varsayan (ya da bunun üzerinde döngüye giren/bloke olan) kodun gerçek sayıları işlemesi gerekir.

Commit’ler: a07fb2f60

image.binary() yeni bir görüntü döndürür (davranış)

image.binary() to_bitmap / copy anahtar sözcüklerini kazandı ve artık kaynak görüntüyü yerinde döndürmek/değiştirmek yerine yeni bir görüntü nesnesi döndürüyor. binary() işlevinin orijinal görüntüyü değiştirmesine güvenen kodun, döndürülen nesneyi kullanması gerekir (ve yerinde olmayan davranış için copy=True geçirmesi gerekir).

Commit’ler: 8a44f0cd9

find_apriltags() 64K piksel ile sınırlandırıldı (davranış)

image.find_apriltags() artık görüntü (veya ROI) 64K pikseli aşarsa istisna fırlatıyor ve 4x4’ten küçük görüntüler için boş bir liste döndürüyor. find_apriltags() çağrısından önce büyük görüntüleri küçültün (daha küçük bir framesize kullanın veya açık bir roi geçirin).

Commit’ler: bd77afbc0

Geçiş kontrol listesi

v3.0.0’a temiz bir geçiş için tipik iş şudur:

  1. image.find_number() / image.classify_object() yerine nn modülünü kullanın (nn geçişi).

  2. Boolean bir dönüş değerini denetlemek yerine sensor.sleep() / sensor.reset() işlevlerini try / except içine sarın (sensor.sleep değişikliği).

  3. WINC soketi send / recv işlevlerinden gelen gerçek bayt sayılarını işleyin (WINC soket değişikliği).

  4. Yerinde değişiklik beklemek yerine image.binary() tarafından döndürülen görüntüyü kullanın (binary değişikliği).

  5. 64K pikselin altında kalmak için find_apriltags() çağrısından önce görüntüleri küçültün (find_apriltags sınırı).

Diğer tüm betikler değişmeden çalışır.