v3.7.0

v3.7.0 büyük bir sürümdür. Yeni bir engellemesiz geri çağırma (callback) API’siyle audio modülünü (Portenta H7 PDM mikrofonu), micro_speech TensorFlow konuşma tanıma modülünü, yepyeni bir paralel-RGB LCD denetleyicisini (HDMI çıkışı ve FT5X06 dokunmatik ile), piksel biçimi sabitleriyle birlikte bir image.flush() metodunu ve yeniden yazılmış bir image.draw_image() ölçekleme hattını ekler. Bazı eski yardımcı kütüphaneler ve görüntü metotları kaldırıldı ve yuv_to_* matematiği değişti — aşağıdaki bozucu değişiklikleri okuyun.

Öne çıkanlar

  • audio modülü — engellemesiz bir start_streaming(callback) API’siyle Portenta H7 yerleşik PDM mikrofonu yakalama.

  • micro_speech — bir TensorFlow micro-speech tanıma modülü.

  • Yeni LCD denetleyicisi — paralel RGB ekran desteği, HDMI çıkışı (TFP410) ve FT5X06 dokunmatik.

  • image.draw_image() — tam bir ölçekleme/alfa/palet hattıyla yeniden yazıldı (x_scale / y_scale / hint / color_palette …).

  • image.flush() ve piksel biçimi sabitleri (image.BINARY / GRAYSCALE / RGB565 / YUV422 / BAYER / JPEG).

  • Bozucu: eski matematik yardımcı kütüphaneleri ve birkaç görüntü metodu kaldırıldı, draw_image() / LCD API’leri yeniden düzenlendi ve yuv_to_* artık 128 çıkarmıyor — bozucu değişikliklere bakın.

Yeni özellikler

  • audio — PDM mikrofonu yakalama için yeni bir Portenta H7 audio modülü: audio.init(), engellemesiz audio.start_streaming(callback) ve audio.stop_streaming() (frekans Hz cinsinden belirtilir).

  • micro_speech — TensorFlow konuşma tanıma için bir MicroSpeech sınıfı, audio_callback() ve micro_speech() içeren yeni bir modül; listen() kayan pencere ortalaması kullanır ve sonuçları bir etiket listesiyle sınırlandırmak için bir filter anahtar sözcüğü kabul eder.

  • LCD — paralel RGB ekran desteğine sahip yeni bir LCD denetleyicisi, LCD_NONE / LCD_SHIELD / LCD_DISPLAY türleri, birçok framesize sabiti, triple_buffer / framesize / refresh / bgr / deinit, genişletilmiş bir display, TFP410 üzerinden HDMI çıkışı ve FT5X06 dokunmatik ekran desteği.

  • image.flush() — bir image.flush() metodu ve piksel biçimi sabitleri (image.BINARY / GRAYSCALE / RGB565 / YUV422 / BAYER / JPEG) eklendi.

  • image.draw_image() — yeni bir ölçekleme hattıyla yeniden yazıldı: x_scale / y_scale / x_size / y_size, rgb_channel, alpha, color_palette, alpha_palette ve hint, ayrıca image.AREA / BILINEAR / BICUBIC / CENTER / EXTRACT_RGB_CHANNEL_FIRST / APPLY_COLOR_PALETTE_FIRST sabitleri ve yeni alfa karıştırma / renk tablosu / ölçekleme örnekleri.

  • ImageReader.next_frame() gerçek zamanlı oynatma gecikmesini devre dışı bırakmak için bir pause anahtar sözcüğü kazandı.

  • Portenta ses örnekleri (audio_fft.py, micro_speech.py) ve bir ExtInt durdurma-modundan-uyandırma örneği eklendi.

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

  • Yerleşik örnekler scripts/examples/Arduino/ altında yeniden düzenlendi; framebuffer artık copy_to_fb=True ile görüntü yükleme/oluşturma sonrasında anında güncelleniyor (manuel flush gerekmiyor); daha fazla statik sürücü durumuna yer açmak için Portenta yığını (heap) biraz küçültüldü.

Hata düzeltmeleri

Kamera ve görüntüleme:

  • Yakalanan görüntülerde yer değiştirmiş kırmızı/mavi (RGB565 bayt sırası) düzeltildi, diğer çizim koduyla eşleşmesi için DMA2D çizim yuvarlaması, özyinelemeli ayırmalarda fb_alloc bozulması (find_blobs()) düzeltildi ve top_hat() / black_hat() hem ikili hem matematik işlemlerinin etkin olmasına bağlandı.

Ekran ve ses:

  • LCD shield çıkışı ve Portenta 1 kanallı mono ses modu düzeltildi.

Portenta:

  • Bir Ethernet/SDRAM sorununa geçici çözüm uygulandı (rst_eth yüksek konuma çekildi) ve SDRAM zamanlama yapılandırması düzeltildi.

Donanım ve kart desteği

  • Arduino Portenta H7 — yerleşik PDM mikrofonu (SAI / PDM2PCM) ses yakalama.

  • LCD — yeni paralel-RGB ekran denetleyicisi (H7 yapısında LTDC etkinleştirildi), TFP410 üzerinden HDMI çıkışı ve FT5X06 dokunmatik ekran LCD desteği.

Bozucu API değişiklikleri

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

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

  • davranış — aynı API, farklı sonuçlar; ince ayar yapılmış betikleri yeniden gözden geçirin.

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

Eski matematik yardımcı kütüphaneleri kaldırıldı (minor)

mtx, rv, ulinalg, umatrix ve vec yardımcı kütüphaneleri, ulab lehine scripts/libraries içinden kaldırıldı. Bunlardan herhangi birini import eden betikler başarısız olur ve ulab kullanacak şekilde taşınmalıdır.

Commit’ler: 1f7da9272

remove_shadows() / chrominvar() / illuminvar() kaldırıldı (minor)

image.remove_shadows(), image.chrominvar() ve image.illuminvar() metotları, yerine bir şey konmadan silindi. Bu metotları çağıran betiklerin çağrıları kaldırması gerekir.

Commit’ler: 3173c2bb3

image.draw_image() imzası yeniden düzenlendi (minor)

image.draw_image() yeni bir ölçekleme hattının üzerine yeniden yazıldı. Eski konumsal alpha / tek scale argümanları ve önceki konumsal sıralama artık geçerli değil; yeni anahtar sözcük biçimini kullanın (x_scale= / y_scale= veya x_size= / y_size=, alpha=, color_palette=, hint= …).

Commit’ler: 3439f8824

LCD modülü yeniden yazıldı (minor)

lcd modülü yeni ekran denetleyicisi için yeniden yazıldı. lcd.init() artık bir ekran type değeri (LCD_NONE / LCD_SHIELD / LCD_DISPLAY) ve yeni anahtar sözcük argümanları alıyor ve sabit / API yüzeyi büyük ölçüde yeniden düzenlendi. Eski yalnızca-shield betikleri çoğunlukla hâlâ çalışıyor, ancak varsayılanlar ve davranış değişti — LCD betiklerinizi yeni type / framesize API’sine göre gözden geçirin.

Commit’ler: 185538207

yuv_to_* artık 128 çıkarmıyor (davranış)

image.yuv_to_binary() / yuv_to_grayscale() / yuv_to_rgb() / yuv_to_lab() artık Y tuple öğesini 128 çıkarmak yerine işaretsiz 0–255 değeri olarak ele alıyor. Çağıranların önceki ile aynı renkleri elde etmesi için Y değerini önceki −128 önyargısı olmadan geçirmesi gerekir.

Commit’ler: dcf141192

Geçiş kontrol listesi

v3.7.0’a temiz bir taşıma için tipik iş şudur:

  1. mtx / rv / ulinalg / umatrix / vec kullanımını ulab kütüphanesine taşıyın (matematik kütüphanesi kaldırma).

  2. image.remove_shadows() / chrominvar() / illuminvar() çağrılarını kaldırın (kaldırılan görüntü metotları).

  3. image.draw_image() çağrılarını yeni anahtar sözcük imzasına güncelleyin (draw_image yeniden düzenlemesi).

  4. LCD betiklerinizi yeni lcd type / framesize API’sine göre gözden geçirin (LCD yeniden yazımı).

  5. Y değerini yuv_to_* fonksiyonlarına geçirirken −128 önyargısını bırakın (yuv_to_* değişikliği).

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