v2.7.0

v2.7.0 memodernisasi API auto-gain / auto-exposure / white-balance sensor ke satuan fisik (dB / mikrodetik), merombak korelasi fase find_displacement() (menambahkan rotasi/skala), dan menambahkan get_similarity() (SSIM), chrominvar() / illuminvar(), buffer bingkai ekstra, dan pustaka MQTT. Ini adalah rilis yang banyak merusak — baca perubahan yang merusak di bawah ini.

Sorotan

  • API sensor modernset_auto_gain() / set_auto_exposure() / set_auto_whitebal() kini menggunakan dB / mikrodetik, dengan pasangan get_gain_db() / get_exposure_us() / get_rgb_gain_db().

  • Korelasi fasefind_displacement() dirombak dengan rotasi / skala dan find_rotscale() / linpolar() / logpolar().

  • SSIM — kemiripan struktural image.get_similarity().

  • Buffer bingkai ekstrasensor.alloc_extra_fb() / dealloc_extra_fb().

  • MQTT — pustaka MQTT baru.

  • Merusak: API gain/exposure/whitebal sensor, find_displacement() / ukuran bingkai FFT, find_number(), alat firmware WINC, dan z_rotation() AprilTag semuanya berubah — lihat perubahan yang merusak.

Fitur baru

  • Sensor — ditambahkan sensor.get_gain_db(), sensor.get_exposure_us(), sensor.get_rgb_gain_db(), kata kunci gain_db_ceiling pada set_auto_gain(), dukungan hmirror / vflip MT9V034, dan sensor.alloc_extra_fb() / sensor.dealloc_extra_fb() untuk buffer bingkai ekstra di RAM.

  • Image — ditambahkan remove_shadows(), min() / max() (perbedaan bingkai), get_similarity() (SSIM) dengan contoh kemiripan struktural, chrominvar() / illuminvar(), find_rotscale(), linpolar() / logpolar(), kata kunci threshold / offset / invert pada filter adaptif mean() / mode() / median() / midpoint(), len() / pengindeksan pada objek titik kunci, dan aksessor .match() pada objek kecocokan titik kunci.

  • Pustaka / jaringan — ditambahkan pustaka MQTT (dengan contoh WiFi MQTT) dan mode network.WINC.MODE_BSP untuk memprogram firmware WINC melalui UART debug.

  • Contoh — ditambahkan skrip contoh daya rendah deep_sleep.py / stop_mode.py, aliran optik lanjutan, dan linear/log-polar; firmware kini mem-parse uart.ini saat boot untuk mengaktifkan REPL UART.

Perubahan dan peningkatan lainnya

  • get_regression() mendapatkan kata kunci area_threshold / pixels_threshold dan regresi robust yang lebih cepat (untuk mengikuti garis / balap); get_pixel() kini mendukung citra Bayer; ditambahkan persiapan STM32H7 (header CMSIS / HAL / bootloader — papan H7 belum dapat digunakan); memperbarui firmware WINC1500 bundel (19.4.4 / 19.5.2).

Perbaikan bug

Imaging:

  • Memperbaiki bug out-of-bounds pencarian diamond find_template(), korupsi logpolar / linpolar, dan illuminvar() berperilaku liar pada nilai warna mendekati nol.

Sensor dan sistem:

  • Memperbaiki bug kontrol auto-gain, memulihkan ukuran MAIN_FB pada snapshot() (sehingga copy_to_fb pada resolusi berbeda, resize FB, dan pooling optical-flow bekerja kembali), waktu tunggu gethostbyname WINC, pydfu clear-status pada bootloader H7, dan mode stop/standby daya rendah.

Dukungan hardware dan papan

  • STM32H7 — persiapan (CMSIS / HAL / bootloader); papan OpenMV H7 belum dapat digunakan dalam rilis ini.

  • WINC1500 — firmware bundel diperbarui.

Perubahan API yang merusak

Perubahan API yang terlihat pengguna antara v2.6.0 dan v2.7.0. Cakupan: modul Python C di modules/ dan pustaka Python di scripts/libraries/.

Setiap perubahan diberi tag dampaknya:

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

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

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

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

sensor.set_auto_gain() dirombak ke dB (major)

sensor.set_auto_gain() tidak lagi menerima kata kunci integer value= dan tidak lagi mengembalikan True / False. Gunakan sensor.set_auto_gain(False, gain_db=...) (nilai float dB), baca kembali dengan sensor.get_gain_db() yang baru, dan bungkus pemanggilan dalam try / except karena kegagalan kini menampilkan ValueError.

Commit: b906c5f19

sensor.set_auto_exposure() dirombak ke mikrodetik (major)

sensor.set_auto_exposure() tidak lagi menerima kata kunci integer value= dan tidak lagi mengembalikan True / False. Gunakan sensor.set_auto_exposure(False, exposure_us=...), baca kembali dengan sensor.get_exposure_us() yang baru, dan tangani ValueError yang ditampilkan saat kegagalan.

Commit: 7be0a7a18

find_displacement() / ukuran bingkai FFT dirombak (major)

Korelasi fase dirombak. image.find_displacement() kini mengembalikan objek displacement (dengan x_translation() / y_translation() — sebelumnya x_offset / y_offset — ditambah rotation() / scale() dan kata kunci baru logpolar / fix_rotation_scale); objek rot-scale terpisah dihapus dan find_rotscale() ditambahkan. Konstanta ukuran bingkai FFT diubah nama/dihapus: sensor.B40x30 dihapus sepenuhnya, dan sensor.B64x32 / B64x64 diubah nama menjadi huruf besar sensor.B64X32 / B64X64 (dengan B128X64 / B128X128 baru).

Commit: c78f91b42, 213396d09

sensor.set_auto_whitebal() dirombak ke dB (minor)

sensor.set_auto_whitebal() mengganti kata kunci integer value=[r, g, b] dengan rgb_gain_db=[r, g, b] (float dB) dan kini mengembalikan None (menampilkan ValueError saat kegagalan) alih-alih True / False. Gunakan sensor.get_rgb_gain_db() yang baru untuk membaca gain kembali.

Commit: 30ecbdc4f

set_hmirror() / set_vflip() mengembalikan None (minor)

sensor.set_hmirror() dan sensor.set_vflip() kini mengembalikan None dan menampilkan ValueError saat kegagalan alih-alih mengembalikan status True / False. Hapus kode apa pun yang bercabang berdasarkan nilai kembaliannya.

Commit: aeb023804

Alat firmware WINC memerlukan jalur file (minor)

Perkakas firmware network.WINC berubah: wlan.fw_dump() / wlan.fw_update() kini memerlukan argumen jalur file firmware yang wajib dan WINC dibuka dalam mode pemrograman (network.WINC(mode=...)). Perbarui pemanggilan tanpa argumen untuk meneruskan jalur (mis. wlan.fw_update("/winc_19_5_2.bin")).

Commit: fcc3b0b9c

image.find_number() memerlukan ROI 28x28 (behavior)

image.find_number() (LeNet) kini memerlukan ROI tepat 28x28 yang muat di dalam citra dan menampilkan kesalahan jika tidak (alih-alih berjalan pada ROI sembarang/penuh citra). Berikan roi=(x, y, 28, 28) secara eksplisit.

Commit: 4d09a13f3

Tanda z_rotation() AprilTag dibalik (behavior)

z_rotation() AprilTag (dan rotation() terkait) kini menggunakan konvensi koordinat tangan kanan, sehingga sudut yang dikembalikan dinegasi dibandingkan rilis sebelumnya. Skrip yang bergantung pada tanda lama harus membalik nilainya atau menyesuaikan matematika sudutnya.

Commit: 7673aaf74

Daftar periksa migrasi

Untuk porting bersih ke v2.7.0, pekerjaan tipikal adalah:

  1. Porting set_auto_gain() ke gain_db= + get_gain_db() dan tangani ValueError (perombakan auto-gain).

  2. Porting set_auto_exposure() ke exposure_us= + get_exposure_us() (perombakan auto-exposure).

  3. Perbarui find_displacement() ke objek displacement dan ubah nama konstanta ukuran bingkai FFT (perombakan find_displacement).

  4. Porting set_auto_whitebal() ke rgb_gain_db= + get_rgb_gain_db() (perombakan white-balance) dan hentikan pemeriksaan nilai kembalian set_hmirror() / set_vflip() (perubahan mirror/flip).

  5. Teruskan jalur firmware ke alat WINC fw_* (perubahan alat WINC).

  6. Teruskan roi 28x28 ke find_number() (perubahan find_number) dan sesuaikan matematika sudut AprilTag untuk tanda z_rotation() yang dibalik (perubahan z_rotation).

Semua skrip lainnya berjalan tanpa perubahan.