v4.5.1

v4.5.1 menambahkan petunjuk orientasi/aspek gambar saat menggambar, memuat citra langsung dari jalur file, ioctl GC2145 untuk bidang pandang lebar, dan API pengontrol backlight baru. Rilis ini juga merombak konstruktor Image(), API display, dan penguraian argumen modul — baca perubahan yang merusak kompatibilitas di bawah ini.

Sorotan

  • Petunjuk gambardraw_image() mendapatkan petunjuk orientasi (HMIRROR/VFLIP/TRANSPOSE, ROTATE_90/180/270) dan penskalaan aspek (SCALE_ASPECT_KEEP/EXPAND/IGNORE).

  • Muat citra dari diskdraw_image() / display.write() menerima string jalur file.

  • Kontrol backlight — kelas DACBacklight / PWMBacklight baru dan argumen backlight= pada display.

  • Merusak: konstruktor Image(), API display, dan penguraian argumen modul berubah — lihat perubahan yang merusak kompatibilitas.

Fitur baru

  • Petunjuk orientasi draw_image()image.HMIRROR, image.VFLIP, image.TRANSPOSE, plus kemudahan image.ROTATE_90 / ROTATE_180 / ROTATE_270.

  • Petunjuk aspek draw_image()image.SCALE_ASPECT_KEEP / SCALE_ASPECT_EXPAND / SCALE_ASPECT_IGNORE untuk pas / perluas / regangkan.

  • Konstanta paletimage.PALETTE_RAINBOW dan image.PALETTE_IRONBOW (dipindahkan ke dalam modul image).

  • Bidang pandang lebar — ioctl baru sensor.IOCTL_SET_FOV_WIDE / IOCTL_GET_FOV_WIDE (pada GC2145, hingga 5x penskalaan sensor).

  • Muat dari diskdraw_image() dan display.write() menerima string jalur file citra sumber, memuatnya langsung dari penyimpanan.

  • Pengontrol backlight — kelas DACBacklight dan PWMBacklight baru (dapat diimpor dari display), dan argumen khusus kata kunci backlight= pada konstruktor display SPI/paralel.

Perubahan dan peningkatan lainnya

  • Driver display DSI ST7701 dipindahkan ke modul st7701.py tersendiri (masih dapat diimpor melalui from display import *) dan dibekukan pada Arduino Giga; driver IMU lsm9ds1 dibekukan pada Arduino Nano 33 BLE Sense.

  • Kamera MT9V022 / MT9V034 (global-shutter) kini menerapkan koreksi row-noise untuk kualitas citra yang lebih baik.

  • Volume penyimpanan massal USB i.MX RT kini diberi label sebagai disk OpenMV.

Perbaikan bug

Kamera dan sensor:

  • Memperbaiki deteksi sudut (find_keypoints() FAST/AGAST) pada citra yang lebih tinggi dari 480 baris — buffer per-baris kini berukuran sesuai tinggi citra.

  • Menambahkan dukungan pin FSYNC untuk snapshot() yang disinkronkan bingkai pada i.MX RT (OpenMV RT1060), dan memperbaiki pin MOSI/MISO SPI4 yang tertukar pada RT1060.

Display dan video:

  • Memperbaiki urutan argumen konstruktor SPIDisplay (bgr, byte_swap, triple_buffer diterapkan ke parameter yang salah).

  • Memperbaiki kerusakan citra TV-shield saat menggambar citra dengan persegi panjang yang ditentukan, dan batas bingkai MJPEG yang salah saat merekam bingkai yang diskalakan.

Jaringan:

  • Mode AP WiFi WINC tidak lagi memberlakukan pembatasan WEP-only yang usang — mode AP terbuka dan WPA berfungsi dengan penanganan PSK yang tepat.

Dukungan hardware dan board

  • OpenMV RT1060 — pin FSYNC dan pin SPI4 yang dikoreksi.

  • Arduino GIGA — solusi keandalan QSPI; display ST7701 dibekukan.

  • Arduino Nano 33 BLE Sense — driver IMU lsm9ds1 dibekukan.

Perubahan API yang merusak kompatibilitas

Perubahan API yang terlihat pengguna antara v4.5.0 dan v4.5.1. Cakupan: C-module Python di modules/ dan library Python di scripts/libraries/.

Setiap perubahan diberi tag dengan dampaknya:

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

  • perilaku — API sama, hasil berbeda; periksa kembali skrip yang telah disetel.

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

Konstruktor Image() dan API display (kecil)

Konstruktor image.Image dirombak menggunakan argumen kata kunci (height, pixformat, buffer=, copy_to_fb=); kini dapat membangun citra dari bytearray/buffer yang sudah ada, dan buffer diperlukan untuk format terkompresi. display.write() dirombak: x_scale/y_scale kini menerima float (rasio skala) atau int (ukuran target dalam piksel) dan kata kunci x_size/y_size terpisah dihapus. Argumen posisional pertama WINC.connect() diubah namanya dari essidssid, dan hasil pemindaian WiFi WINC berubah menjadi (ssid_bytes, bssid_bytes, channel, rssi, security, N) (SSID/BSSID kini berupa bytes; BSSID bukan lagi string MAC yang diformat).

Commit: 6752c95ac, 161737092, 8178c237c, b6cdf8de1

Rentang backlight, penskalaan, dan argumen hanya kata kunci (perilaku)

Display.backlight() kini menerima intensitas 0–100 (0 = mati, 100 = penuh) alih-alih 0–255, menaikkan ValueError jika di luar rentang. Nilai integer x_scale/y_scale kini diperlakukan sebagai faktor skala multiplikatif (sama seperti float) alih-alih dimensi piksel target — ini memengaruhi fir.snapshot()/draw_ir(), tof.snapshot()/draw_depth(), display, dan penskalaan tv. Penguraian argumen di seluruh modul sensor, fir, tof, tv, mjpeg, gif, imageio, tf, dan audio telah disatukan, membuat beberapa opsi yang sebelumnya posisional menjadi hanya kata kunci (nama, nilai default, dan perilaku tidak berubah).

Commit: 391ec443f, 8bd25d6cd, 477312656, 08bf62a32, a4c0f20bf, 9b411a66d, 3d679f5a6, d15fc6b8d, 555e67ecd

Daftar periksa migrasi

Untuk migrasi bersih ke v4.5.1, pekerjaan umum yang perlu dilakukan:

  1. Perbarui konstruksi Image() ke bentuk kata kunci baru, beralih dari display.write() dengan x_size/y_size, dan ubah nama essidssid pada WINC.connect() (tangani tuple pemindaian berbasis bytes baru) (perubahan konstruktor/display/WINC).

  2. Skalakan ulang panggilan Display.backlight() ke 0–100, periksa kembali penggunaan integer x_scale/y_scale, dan teruskan opsi modul yang sebelumnya posisional sebagai kata kunci (perubahan perilaku).