v3.3.0

v3.3.0 adalah rilis besar. Versi ini menambahkan dukungan penuh kamera termal FLIR Lepton dengan antarmuka sensor.ioctl() baru dan palet warna, modul output video SPI tv, mode triggered global-shutter, sekumpulan besar metode gambar/analisis image baru (gamma_corr(), draw_ellipse(), draw_edges(), banyak properti blob), serta library ToF / motor / linalg baru. API cpufreq telah didesain ulang dan sensor.set_framesize() kini memunculkan pengecualian — baca perubahan yang merusak di bawah ini.

Sorotan

  • FLIR Lepton — dukungan penuh kamera termal melalui antarmuka sensor.ioctl() baru, palet warna, dan image.to_rainbow().

  • Modul tv — output video TV SPI / komposit.

  • Mode triggered global-shutter — pengambilan gambar triggered MT9V034 melalui sensor.ioctl().

  • Pencitraangamma_corr(), draw_ellipse(), draw_edges(), alpha blending draw_image(), dan banyak properti blob baru.

  • Library baru — driver jarak ToF VL53L1X, driver motor TB6612, micro-linalg.

  • Merusak: API cpufreq telah didesain ulang, sensor.set_framesize() kini memunculkan pengecualian saat gagal, sensor.alloc_extra_fb() tidak lagi mendukung Bayer/JPEG, dan argumen posisional image.replace() bergeser — lihat perubahan yang merusak.

Fitur baru

  • FLIR Lepton — menambahkan sensor.ioctl() untuk kontrol khusus sensor dan sekumpulan lengkap ioctl Lepton (radiometri, refresh/resolusi, perintah-jalankan, set/get atribut, suhu FPA/AUX dalam °C, mode/rentang pengukuran, lebar/tinggi), sensor.set_color_palette() / sensor.get_color_palette() dengan sensor.PALETTE_RAINBOW / PALETTE_IRONBOW, image.to_rainbow(), dan skrip contoh Lepton (27-Lepton).

  • Mode triggeredIOCTL_SET_TRIGGERED_MODE / IOCTL_GET_TRIGGERED_MODE untuk pengambilan gambar triggered global-shutter MT9V034, dengan contoh FPS tinggi dan mode triggered.

  • Modul tv — menambahkan binding output video TV SPI / komposit.

  • Pencitraan — menambahkan image.gamma_corr(), image.draw_ellipse(), image.draw_edges(), alpha blending draw_image(), kata kunci mask= pada clear(), menambahkan kembali mask_rectangle() / mask_circle() / mask_ellipse(), kata kunci rotation / hmirror / vflip pada draw_string() / draw_text(), kata kunci transpose (dan alias assign / set) pada replace(), x_scale / y_scale pada copy() ditambah crop() / scale(), konstruktor Image() dari dimensi, pixformat sensor.BINARY, fungsi konversi color-space yang diekspor, dan banyak properti blob baru (corners, perimeter, roundness, elongation, extent, compactness, solidity, convexity, enclosing_circle, enclosed_ellipse, rotation).

  • Library — menambahkan driver sensor jarak ToF vl53l1x, driver motor tb6612 (dengan contoh DC-motor dan stepper Motor-Shield), dan library micro-linalg (ulinalg / umatrix).

  • Memutakhirkan FatFS ke FF13C (mampu exFAT).

Perubahan dan peningkatan lainnya

  • Meningkatkan kualitas JPEG default (rentang menengah dari rendah–tinggi alih-alih nilai hardcoded); operasi citra in-place tidak lagi memerlukan pengulangan citra sebagai argumen pertama; draw_string() menerima nilai skala non-integer.

Perbaikan bug

Kamera dan sensor:

  • Memperbaiki hang startup Lepton 3.5 (timeout + pemulihan) dan keandalan reset, set_framesize() MT9V034 sebelum set_pixformat() (urutan panggilan tidak lagi penting), MT9V034 WVGA pada STM32H7, rentang auto-eksposur MT9V034 dan pembaruan register bayangan, serta bug ADC H7.

Pencitraan:

  • Memperbaiki akses memori tidak valid di find_apriltags(), copy() saat menyalin citra berskala ke framebuffer utama, alokasi framebuffer to_grayscale() / to_rgb565(), len() objek keypoint, penanganan batas MCU JPEG, parsing daftar ambang batas binary(), dan draw_keypoints() yang menerima tuple keypoint.

Sistem:

  • Memperbaiki kebocoran ketidakseimbangan mark/free fb_alloc di seluruh metode image / fir / lcd / tv / nn, membuat py_assert membebaskan memori framebuffer pada pengecualian yang ditangkap (#417), menghapus flag overrun UART (ORE) sehingga overrun tidak lagi memblokir pembacaan UART, memperbaiki handler IRQ RTC, dan memperbaiki alat Windows cascade_convert.py.

Dukungan hardware dan board

  • Kamera termal FLIR Lepton.

  • TV shield — output video TV SPI / komposit.

  • Mode triggered global-shutter (MT9V034).

Perubahan API yang merusak

Perubahan API yang terlihat oleh pengguna antara v3.2.0 dan v3.3.0. Cakupan: modul C Python di modules/ dan library Python di scripts/libraries/.

Setiap perubahan diberi tag dampaknya:

  • major — memengaruhi sebagian besar skrip yang menggunakan fitur ini; Anda perlu melakukan porting kode.

  • minor — API yang sempit; hanya memengaruhi skrip yang menggunakannya.

  • behavior — API sama, hasil berbeda; periksa ulang skrip yang sudah disetel.

Perubahan dikelompokkan berdasarkan dampak dalam urutan tersebut. Jika Anda hanya ingin melakukan porting kode, langsung ke daftar periksa migrasi di bagian akhir. Setiap hash commit menautkan ke diff-nya di GitHub.

API cpufreq didesain ulang (major)

Modul cpufreq telah didesain ulang untuk dukungan H7. Konstanta cpufreq.CPUFREQ_120MHZ / 144 / 168 / 192 / 216MHZ dan cpufreq.get_frequency() dihapus. cpufreq.set_frequency() kini menerima integer MHz biasa (mis. cpufreq.set_frequency(120)), dan cpufreq.get_current_frequencies() / cpufreq.get_supported_frequencies() ditambahkan.

Commit: 6babf84a1

Argumen posisional image.replace() bergeser (minor)

image.replace() mendapatkan argumen transpose, menggeser argumen posisional mask dari posisi 4 ke posisi 5. Kode yang meneruskan mask secara posisional (mis. img.replace(src, hmirror, vflip, mask)) harus beralih ke bentuk kata kunci img.replace(src, mask=mask).

Commit: dbe7bf059

sensor.alloc_extra_fb() tidak lagi menerima Bayer/JPEG (minor)

sensor.alloc_extra_fb() tidak lagi menerima sensor.BAYER atau sensor.JPEG (kini juga mendukung sensor.BINARY). Kode yang mengalokasikan framebuffer ekstra dalam format Bayer atau JPEG harus menggunakan GRAYSCALE / RGB565 (atau mengalokasikan buffer dengan cara lain).

Commit: f9e6b3fe0

sensor.set_framesize() memunculkan pengecualian saat gagal (behavior)

sensor.set_framesize() kini memunculkan ValueError ketika ukuran bingkai tidak didukung alih-alih mengembalikan False. Kode yang memeriksa nilai kembalian False harus menangkap pengecualian ValueError.

Commit: b0442633e

Daftar periksa migrasi

Untuk porting bersih ke v3.3.0, pekerjaan umum yang diperlukan adalah:

  1. Porting kode cpufreq ke set_frequency() integer-MHz dan get_current_frequencies() / get_supported_frequencies() (desain ulang cpufreq).

  2. Teruskan mask ke image.replace() sebagai kata kunci (perubahan replace).

  3. Alokasikan framebuffer ekstra sebagai GRAYSCALE / RGB565 alih-alih Bayer/JPEG (perubahan alloc_extra_fb).

  4. Tangkap ValueError di sekitar sensor.set_framesize() alih-alih memeriksa False (perubahan set_framesize).

Semua skrip lainnya berjalan tanpa perubahan.