v3.6.1

v3.6.1 büyük bir sürümdür. imu modülünü (LSM6DS3), IMU tabanlı otomatik döndürme içeren bir dizi yeni sensor getter API’sini, 4 noktalı perspektif rotation_corr() özelliğini tanıtır ve Arduino Portenta H7‘yi HIMAX HM01B0 ve OV7690 kameralarıyla devreye alır. Birçok sensor / image API’si değişti ve M7’de TensorFlow kaldırıldı — aşağıdaki kırıcı değişiklikleri okuyun.

Öne çıkanlar

  • imu modülü — LSM6DS3 üzerinde ivmeölçer / jiroskop / sıcaklık / yuvarlanma / yunuslama (OpenMV 4 / Portenta).

  • Sensör getter’ları + otomatik döndürmeget_pixformat() / get_framesize() / get_hmirror() / get_vflip() / get_windowing(), set_transpose() / set_auto_rotation() ve IMU tabanlı anlık görüntü döndürme.

  • Perspektif düzeltmerotation_corr() artık fov ve corners (4 noktalı) anahtar sözcüklerini destekliyor.

  • Yeni donanım — Arduino Portenta H7, HIMAX HM01B0 ve OV7690 kamera.

  • Kırıcı: set_pixformat() / set_framesize() artık None döndürüyor, sensor.set_framerate() kaldırıldı, M7’de TensorFlow kaldırıldı ve lens_corr() / linpolar() artık çift boyutlar gerektiriyor — kırıcı değişikliklere bakın.

Yeni özellikler

  • imu — yeni bir IMU modülü: imu.acceleration_mg(), imu.angular_rate_mdps(), imu.temperature_c(), imu.roll(), imu.pitch() ve imu.sleep() (OpenMV 4 / Portenta üzerinde LSM6DS3).

  • Sensör getter’larısensor.get_pixformat(), get_framesize(), get_hmirror(), get_vflip(), get_windowing(), set_transpose() / get_transpose() ve set_auto_rotation() / get_auto_rotation() eklendi.

  • Otomatik döndürme — otomatik döndürme etkinleştirildiğinde sensor.snapshot() çerçeveleri çevirmek / aynalamak / devrik almak için IMU’yu kullanır.

  • rotation_corr()fov ve corners (4 noktalı perspektif) anahtar sözcükleri ve perspektif düzeltme örnekleriyle birlikte eklendi.

  • lcd.init() — bir bgr anahtar sözcük argümanı eklendi.

  • collections.deque — MicroPython derlemesinde etkinleştirildi.

  • sensor.OV7690 ve sensor.HM01B0 id sabitleri ve numpy benzeri bir ulab görüntü filtresi örneği eklendi.

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

  • Görüntü filtreleri (medyan / mod / ortalama / …), find_circles() ve lens düzeltmesi önemli ölçüde optimize edildi; alloc_extra_fb artık herhangi bir sayıda bayt ayırabiliyor; kişi tespiti modeli yeni bir ortalama havuzlama (average-pool) işlemiyle yeniden oluşturuldu.

Hata düzeltmeleri

Kamera ve sensörler:

  • OV2640 sleep() (artık güç kesme pini yerine COM2 bekleme yazmacını kullanır), FSYNC pin yapılandırması, HM01B0 HSYNC/VSYNC polariteleri ve I2C adresi/taraması, Portenta sensör güç kesme GPIO’su ve kamera sıfırlama pini düzeltildi ve IMU yunuslaması 90°/270° yakınındayken otomatik döndürme devre dışı bırakıldı.

Görüntüleme ve sistem:

  • Bir görüntü filtresi sınır denetimi hatası, D-cache devre dışı bırakılırken oluşan bir hardfault, SD kartı olmayan kartlarda önyükleme, bir tf.load() load_to_fb hatası, kişi tespiti yığın taşması (H7 yığını ≥12 KB’ye yükseltildi) ve OpenMV 4 Plus’ta yüksek hızlı mod için USB tanımlayıcı ofsetleri düzeltildi.

Donanım ve kart desteği

  • Arduino Portenta H7 — ilk kart devreye alma (STM32H747 saat/OSC/HSE yapılandırması, CMSIS başlıkları, ADC, SDRAM, Arduino USB PID).

  • HIMAX HM01B0 — yeni monokrom kamera sürücüsü (Bayer, harici osilatör saati).

  • OV7690 — yeni kamera sürücüsü.

  • LSM6DS3 IMU — OpenMV 4 / Portenta.

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

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

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

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

Değişiklikler bu sırayla etkilerine göre gruplanmıştır. Yalnızca kodunuzu taşımak istiyorsanız, sonundaki taşıma kontrol listesine geçin. Her commit hash’i GitHub üzerindeki diff’ine bağlanır.

sensor.set_framerate() kaldırıldı (minor)

İşlevi olmayan sensor.set_framerate() saplaması kaldırıldı; artık çağrılması AttributeError yükseltir. Çağrıyı kaldırın ve çerçeve zamanlamasını bunun yerine framesize/pozlama aracılığıyla kontrol edin. (Çalışan bir set_framerate() v4.0.2’de yeniden tanıtıldı.)

Commits: 705e98f91

OpenMV Cam M7’de TensorFlow kaldırıldı (minor)

TensorFlow (tf modülü) OpenMV Cam M7 / OpenMV 3’te devre dışı bırakıldı (artık sığmıyor). M7’de import tf başarısız olur — TensorFlow için H7 sınıfı bir kamera kullanın. (tf v3.6.3’te F7’de yeniden etkinleştirildi.)

Commits: 2ae875077

set_pixformat() / set_framesize() None döndürüyor (behavior)

sensor.set_pixformat() ve sensor.set_framesize() artık True yerine None döndürüyor ve desteklenmeyen bir piksel biçimi artık bir assertion yerine bir ValueError yükseltiyor. Dönüş değerini kontrol eden kod (örn. if sensor.set_pixformat(...):) bunu yapmayı bırakmalı ve desteklenmeyen biçimler için AssertionError yakalayan kod ValueError yakalamalıdır.

Commits: f314ac4e7

lens_corr() / linpolar() / logpolar() çift boyutlar gerektiriyor (behavior)

image.lens_corr() ve image.linpolar() / image.logpolar() artık çift görüntü genişliği ve yüksekliği gerektiriyor ve tek boyutlarda hata yükseltiyor. Bu metotları çağırmadan önce görüntüyü çift boyutlara kırpın veya yeniden boyutlandırın.

Commits: b36460a36, 2b26ca17b

Taşıma kontrol listesi

v3.6.1’e temiz bir taşıma için tipik iş şudur:

  1. sensor.set_framerate() çağrılarını kaldırın (set_framerate kaldırılması).

  2. TensorFlow iş yüklerini OpenMV Cam M7’den taşıyın (M7 TensorFlow değişikliği).

  3. set_pixformat() / set_framesize() dönüş değerine güvenmeyi bırakın ve desteklenmeyen piksel biçimleri için ValueError yakalayın (dönüş değeri değişikliği).

  4. lens_corr() / linpolar() / logpolar() öncesinde çift görüntü boyutları sağlayın (çift boyut gereksinimi).

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