v2.7.0

v2.7.0, sensor otomatik kazanç / otomatik pozlama / beyaz dengesi API’sini fiziksel birimlere (dB / mikrosaniye) modernize eder, faz korelasyonu find_displacement() işlevini elden geçirir (döndürme/ölçek ekleyerek) ve get_similarity() (SSIM), chrominvar() / illuminvar(), ek çerçeve arabellekleri (frame buffer) ve bir MQTT kütüphanesi ekler. Bu büyük bir kırıcı sürümdür — aşağıdaki kırıcı değişiklikleri okuyun.

Öne çıkanlar

  • Modern sensör API’siset_auto_gain() / set_auto_exposure() / set_auto_whitebal() artık dB / mikrosaniye kullanıyor, eşleşen get_gain_db() / get_exposure_us() / get_rgb_gain_db() ile birlikte.

  • Faz korelasyonu — döndürme / ölçek ve find_rotscale() / linpolar() / logpolar() ile yeniden çalışılmış find_displacement().

  • SSIMimage.get_similarity() yapısal benzerlik.

  • Ek çerçeve arabellekleri (frame buffer)sensor.alloc_extra_fb() / dealloc_extra_fb().

  • MQTT — yeni bir MQTT kütüphanesi.

  • Kırıcı: sensör kazanç/pozlama/beyaz dengesi API’si, find_displacement() / FFT framesize’ları, find_number(), WINC aygıt yazılımı (firmware) araçları ve AprilTag z_rotation() hepsi değişti — kırıcı değişikliklere bakın.

Yeni özellikler

  • Sensörsensor.get_gain_db(), sensor.get_exposure_us(), sensor.get_rgb_gain_db(), set_auto_gain() üzerinde bir gain_db_ceiling anahtar sözcüğü, MT9V034 hmirror / vflip desteği ve ek RAM içi çerçeve arabellekleri için sensor.alloc_extra_fb() / sensor.dealloc_extra_fb() eklendi.

  • Görüntüremove_shadows(), min() / max() (çerçeve farkı alma), yapısal benzerlik örneğiyle birlikte get_similarity() (SSIM), chrominvar() / illuminvar(), find_rotscale(), linpolar() / logpolar(), mean() / mode() / median() / midpoint() uyarlamalı filtrelerinde threshold / offset / invert anahtar sözcükleri, anahtar nokta nesnesinde len() / indeksleme ve anahtar nokta eşleşme nesnesinde bir .match() erişimcisi eklendi.

  • Kütüphaneler / ağ — bir MQTT kütüphanesi (WiFi MQTT örneğiyle birlikte) ve debug UART üzerinden WINC aygıt yazılımını (firmware) programlamak için bir network.WINC.MODE_BSP modu eklendi.

  • Örnekler — düşük güçlü deep_sleep.py / stop_mode.py, gelişmiş optik akış ve doğrusal/log-polar örnek betikleri eklendi; aygıt yazılımı (firmware) artık bir REPL UART’ı etkinleştirmek için önyükleme sırasında uart.ini dosyasını ayrıştırıyor.

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

  • get_regression() işlevine area_threshold / pixels_threshold anahtar sözcükleri ve daha hızlı bir sağlam regresyon (çizgi takibi / yarış için) eklendi; get_pixel() artık Bayer görüntüleri destekliyor; STM32H7 temel altyapısı eklendi (CMSIS başlıkları / HAL / önyükleyici — H7 kartı henüz kullanılabilir değil); paketlenen WINC1500 aygıt yazılımı (firmware) güncellendi (19.4.4 / 19.5.2).

Hata düzeltmeleri

Görüntüleme:

  • find_template() elmas-arama sınır dışı hatası, logpolar / linpolar bozulması ve illuminvar() işlevinin sıfıra yakın renk değerlerinde kontrolden çıkması düzeltildi.

Sensör ve sistem:

  • Otomatik kazanç kontrolü hataları, snapshot() üzerinde MAIN_FB boyutunun geri yüklenmesi (böylece farklı bir çözünürlükte copy_to_fb, FB yeniden boyutlandırma ve optik akış havuzlama yeniden çalışıyor), WINC gethostbyname zaman aşımı, H7 önyükleyicisinde pydfu clear-status ve düşük güçlü durdurma/beklemede modları düzeltildi.

Donanım ve kart desteği

  • STM32H7 — temel altyapı (CMSIS / HAL / önyükleyici); OpenMV H7 kartı bu sürümde henüz kullanılabilir değil.

  • WINC1500 — paketlenen aygıt yazılımı (firmware) güncellendi.

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

v2.6.0 ile v2.7.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:

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

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

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

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

sensor.set_auto_gain() dB’ye göre yeniden çalışıldı (major)

sensor.set_auto_gain() artık tam sayı value= anahtar sözcüğünü kabul etmiyor ve artık True / False döndürmüyor. sensor.set_auto_gain(False, gain_db=...) kullanın (bir float dB değeri), yeni sensor.get_gain_db() ile geri okuyun ve başarısızlık artık ValueError yükselttiği için çağrıyı try / except içine alın.

Commit’ler: b906c5f19

sensor.set_auto_exposure() mikrosaniyeye göre yeniden çalışıldı (major)

sensor.set_auto_exposure() artık tam sayı value= anahtar sözcüğünü kabul etmiyor ve artık True / False döndürmüyor. sensor.set_auto_exposure(False, exposure_us=...) kullanın, yeni sensor.get_exposure_us() ile geri okuyun ve başarısızlıkta yükseltilen ValueError hatasını ele alın.

Commit’ler: 7be0a7a18

find_displacement() / FFT framesize’ları elden geçirildi (major)

Faz korelasyonu elden geçirildi. image.find_displacement() artık bir yer değiştirme nesnesi döndürüyor (x_translation() / y_translation() — eskiden x_offset / y_offset — artı rotation() / scale() ve yeni logpolar / fix_rotation_scale anahtar sözcükleriyle); ayrı rot-scale nesnesi kaldırıldı ve find_rotscale() eklendi. FFT framesize sabitleri yeniden adlandırıldı/kaldırıldı: sensor.B40x30 tamamen kaldırıldı ve sensor.B64x32 / B64x64 büyük harfli sensor.B64X32 / B64X64 olarak yeniden adlandırıldı (yeni B128X64 / B128X128 ile birlikte).

Commit’ler: c78f91b42, 213396d09

sensor.set_auto_whitebal() dB’ye göre yeniden çalışıldı (minor)

sensor.set_auto_whitebal(), tam sayı value=[r, g, b] anahtar sözcüğünü rgb_gain_db=[r, g, b] (float dB) ile değiştirdi ve artık True / False yerine None döndürüyor (başarısızlıkta ValueError yükselterek). Kazançları geri okumak için yeni sensor.get_rgb_gain_db() işlevini kullanın.

Commit’ler: 30ecbdc4f

set_hmirror() / set_vflip() None döndürüyor (minor)

sensor.set_hmirror() ve sensor.set_vflip() artık bir True / False durumu döndürmek yerine None döndürüyor ve başarısızlıkta ValueError yükseltiyor. Dönüş değerlerine göre dallanan kodları kaldırın.

Commit’ler: aeb023804

WINC aygıt yazılımı araçları bir dosya yolu gerektiriyor (minor)

network.WINC aygıt yazılımı (firmware) araçları değişti: wlan.fw_dump() / wlan.fw_update() artık zorunlu bir aygıt-yazılımı-dosya-yolu argümanı alıyor ve WINC bir programlama modunda açılıyor (network.WINC(mode=...)). Argümansız çağrıları bir yol geçirecek şekilde güncelleyin (ör. wlan.fw_update("/winc_19_5_2.bin")).

Commit’ler: fcc3b0b9c

image.find_number() 28x28 bir ROI gerektiriyor (behavior)

image.find_number() (LeNet) artık görüntünün içine sığan tam olarak 28x28 bir ROI gerektiriyor ve aksi takdirde bir hata yükseltiyor (rastgele/tam görüntü ROI üzerinde çalışmak yerine). Açık bir roi=(x, y, 28, 28) geçirin.

Commit’ler: 4d09a13f3

AprilTag z_rotation() işareti ters çevrildi (behavior)

AprilTag z_rotation() (ve ilgili rotation()) artık sağ elli bir koordinat geleneği kullanıyor, bu nedenle döndürülen açı önceki sürümlere kıyasla negatif. Eski işarete bağımlı betiklerin değeri tersine çevirmesi veya açı matematiklerini ayarlaması gerekir.

Commit’ler: 7673aaf74

Geçiş kontrol listesi

v2.7.0’a temiz bir geçiş için tipik iş şudur:

  1. set_auto_gain() işlevini gain_db= + get_gain_db() biçimine taşıyın ve ValueError hatasını ele alın (otomatik kazanç yeniden çalışması).

  2. set_auto_exposure() işlevini exposure_us= + get_exposure_us() biçimine taşıyın (otomatik pozlama yeniden çalışması).

  3. find_displacement() işlevini yer değiştirme nesnesine güncelleyin ve FFT framesize sabitlerini yeniden adlandırın (find_displacement elden geçirmesi).

  4. set_auto_whitebal() işlevini rgb_gain_db= + get_rgb_gain_db() biçimine taşıyın (beyaz dengesi yeniden çalışması) ve set_hmirror() / set_vflip() dönüşünü kontrol etmeyi bırakın (ayna/çevirme değişikliği).

  5. WINC fw_* araçlarına bir aygıt yazılımı (firmware) yolu geçirin (WINC araçları değişikliği).

  6. find_number() işlevine 28x28 bir roi geçirin (find_number değişikliği) ve ters çevrilen z_rotation() işareti için AprilTag açı matematiğini ayarlayın (z_rotation değişikliği).

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