v3.3.0

v3.3.0 büyük bir sürümdür. Yeni bir sensor.ioctl() arayüzü ve renk paletleriyle tam FLIR Lepton termal kamera desteği, bir tv SPI video çıkışı modülü, global-shutter tetiklemeli mod, yeni image çizim/analiz yöntemlerinden oluşan büyük bir grup (gamma_corr(), draw_ellipse(), draw_edges(), birçok nokta (blob) özelliği) ve yeni ToF / motor / linalg kütüphaneleri ekler. cpufreq API’si yeniden tasarlandı ve sensor.set_framesize() artık hata fırlatıyor — aşağıdaki kırıcı değişiklikleri okuyun.

Öne çıkanlar

  • FLIR Lepton — yeni sensor.ioctl() arayüzü, renk paletleri ve image.to_rainbow() aracılığıyla tam termal kamera desteği.

  • tv modülü — SPI TV / kompozit video çıkışı.

  • Global-shutter tetiklemeli modsensor.ioctl() aracılığıyla MT9V034 tetiklemeli yakalama.

  • Görüntülemegamma_corr(), draw_ellipse(), draw_edges(), draw_image() alfa harmanlama ve birçok yeni nokta (blob) özelliği.

  • Yeni kütüphaneler — VL53L1X ToF mesafe, TB6612 motor sürücüsü, micro-linalg.

  • Kırıcı: cpufreq API’si yeniden tasarlandı, sensor.set_framesize() artık başarısızlıkta hata fırlatıyor, sensor.alloc_extra_fb() Bayer/JPEG desteğini bıraktı ve image.replace() konumsal argümanları kaydı — kırıcı değişikliklere bakın.

Yeni özellikler

  • FLIR Lepton — sensöre özgü kontrol için sensor.ioctl() ve tam bir Lepton ioctl seti (radyometri, yenileme/çözünürlük, run-command, set/get attribute, °C cinsinden FPA/AUX sıcaklığı, ölçüm modu/aralığı, genişlik/yükseklik), sensor.PALETTE_RAINBOW / PALETTE_IRONBOW ile sensor.set_color_palette() / sensor.get_color_palette(), image.to_rainbow() ve Lepton örnek betikleri (27-Lepton) eklendi.

  • Tetiklemeli mod — MT9V034 global-shutter tetiklemeli yakalama için IOCTL_SET_TRIGGERED_MODE / IOCTL_GET_TRIGGERED_MODE, yüksek FPS ve tetiklemeli mod örnekleriyle birlikte.

  • tv modülü — SPI TV / kompozit video çıkışı bağlamaları eklendi.

  • Görüntülemeimage.gamma_corr(), image.draw_ellipse(), image.draw_edges(), draw_image() alfa harmanlama, clear() üzerinde bir mask= anahtar sözcüğü, yeniden eklenen mask_rectangle() / mask_circle() / mask_ellipse(), draw_string() / draw_text() üzerinde rotation / hmirror / vflip anahtar sözcükleri, replace() üzerinde bir transpose anahtar sözcüğü (ve assign / set takma adları), copy() x_scale / y_scale artı crop() / scale(), boyutlardan bir Image() kurucusu, sensor.BINARY piksel formatı, dışa aktarılan renk uzayı dönüştürme fonksiyonları ve birçok yeni nokta (blob) özelliği (corners, perimeter, roundness, elongation, extent, compactness, solidity, convexity, enclosing_circle, enclosed_ellipse, rotation) eklendi.

  • Kütüphanelervl53l1x ToF mesafe sensörü sürücüsü, tb6612 motor sürücüsü (DC motor ve step motor Motor-Shield örnekleriyle) ve bir micro-linalg kütüphanesi (ulinalg / umatrix) eklendi.

  • FatFS, FF13C sürümüne (exFAT uyumlu) yükseltildi.

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

  • Varsayılan JPEG kalitesi iyileştirildi (sabit kodlanmış bir değer yerine düşük–yüksek orta aralığı); yerinde görüntü işlemleri artık görüntüyü ilk argüman olarak tekrarlamayı gerektirmiyor; draw_string() artık tamsayı olmayan ölçek değerlerini kabul ediyor.

Hata düzeltmeleri

Kamera ve sensörler:

  • Lepton 3.5 başlangıç takılması (zaman aşımı + kurtarma) ve sıfırlama güvenilirliği, set_pixformat() öncesinde MT9V034 set_framesize() (çağrı sırası artık önemli değil), STM32H7 üzerinde MT9V034 WVGA, MT9V034 otomatik pozlama aralığı ve gölge yazmaç güncellemeleri ile H7 ADC hatası düzeltildi.

Görüntüleme:

  • find_apriltags() içindeki geçersiz bellek erişimi, ölçeklenmiş bir görüntüyü ana çerçeve arabelleğine (frame buffer) kopyalarken copy(), to_grayscale() / to_rgb565() çerçeve arabelleği (frame buffer) ayırma, anahtar nokta nesnesinin len() değeri, JPEG MCU sınır işleme, binary() eşik listesi ayrıştırma ve draw_keypoints() fonksiyonunun anahtar nokta demetlerini kabul etmesi düzeltildi.

Sistem:

  • image / fir / lcd / tv / nn yöntemleri genelinde fb_alloc mark/free dengesizliği sızıntıları düzeltildi, py_assert yakalanan istisnalarda çerçeve arabelleği (frame buffer) belleğini serbest bırakacak şekilde yapıldı (#417), aşmaların artık UART okumalarını sıkıştırmaması için UART aşma (ORE) bayrağı temizlendi, RTC IRQ işleyicisi düzeltildi ve Windows cascade_convert.py aracı düzeltildi.

Donanım ve kart desteği

  • FLIR Lepton termal kamera.

  • TV shield — SPI TV / kompozit video çıkışı.

  • Global-shutter (MT9V034) tetiklemeli mod.

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

v3.2.0 ile v3.3.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 bir 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. Yalnızca kodunuzu taşımak istiyorsanız, sondaki taşıma kontrol listesine atlayın. Her commit hash’i GitHub’daki diff’ine bağlanır.

cpufreq API’si yeniden tasarlandı (major)

cpufreq modülü H7 desteği için yeniden tasarlandı. cpufreq.CPUFREQ_120MHZ / 144 / 168 / 192 / 216MHZ sabitleri ve cpufreq.get_frequency() kaldırıldı. cpufreq.set_frequency() artık düz bir MHz tamsayısı alıyor (örn. cpufreq.set_frequency(120)) ve cpufreq.get_current_frequencies() / cpufreq.get_supported_frequencies() eklendi.

Commit’ler: 6babf84a1

image.replace() konumsal argümanları kaydı (minor)

image.replace() bir transpose argümanı kazandı ve konumsal mask argümanını 4. konumdan 5. konuma kaydırdı. mask argümanını konumsal olarak geçiren kod (örn. img.replace(src, hmirror, vflip, mask)) img.replace(src, mask=mask) anahtar sözcük biçimine geçmelidir.

Commit’ler: dbe7bf059

sensor.alloc_extra_fb() artık Bayer/JPEG kabul etmiyor (minor)

sensor.alloc_extra_fb() artık sensor.BAYER veya sensor.JPEG kabul etmiyor (artık sensor.BINARY da destekliyor). Bayer veya JPEG formatında ek çerçeve arabellekleri (frame buffer) ayıran kod GRAYSCALE / RGB565 kullanmalı (veya arabelleği başka bir şekilde ayırmalı).

Commit’ler: f9e6b3fe0

sensor.set_framesize() başarısızlıkta hata fırlatıyor (behavior)

sensor.set_framesize() artık çerçeve boyutu desteklenmediğinde False döndürmek yerine bir ValueError fırlatıyor. False dönüş değerini kontrol eden kod, bunun yerine ValueError istisnasını yakalamalıdır.

Commit’ler: b0442633e

Taşıma kontrol listesi

v3.3.0’a temiz bir geçiş için tipik işler şunlardır:

  1. cpufreq kodunu tamsayı-MHz set_frequency() ve get_current_frequencies() / get_supported_frequencies() biçimine taşıyın (cpufreq yeniden tasarımı).

  2. mask argümanını image.replace() fonksiyonuna anahtar sözcük olarak geçirin (replace değişikliği).

  3. Ek çerçeve arabelleklerini (frame buffer) Bayer/JPEG yerine GRAYSCALE / RGB565 olarak ayırın (alloc_extra_fb değişikliği).

  4. False kontrolü yerine sensor.set_framesize() çevresinde ValueError yakalayın (set_framesize değişikliği).

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