v1.4.0

v1.4.0 adalah reorganisasi imlib fondasi. find_blobs() / find_markers() ditulis ulang untuk pelacakan ambang batas warna langsung, banyak metode citra mandiri dilipat ke dalam tuple blob, dan beberapa metode citra diubah namanya (subimgcopy, blitreplace, find_eyesfind_eye, compresscompressed). Rilis ini juga menambahkan sensor.get_fb() / toggle AGC / AEC dan ~60 skrip contoh. Ini adalah rilis yang banyak melanggar — baca perubahan yang melanggar di bawah ini.

Sorotan

  • Pelacakan blob berbasis warnafind_blobs() menerima ambang batas warna langsung dan mengembalikan daftar datar tuple blob.

  • Pembersihan Imlibsubimg()copy(), blit()replace(), find_eyes()find_eye(), compress()compressed().

  • Sensor — ditambahkan sensor.get_fb() dan toggle aktifkan AGC/AEC.

  • ~60 skrip contoh ditambahkan/diperluas.

  • Melanggar: API blob, metode citra yang dihapus, dan beberapa perubahan nama — lihat perubahan yang melanggar.

Fitur baru

  • Sensor — ditambahkan sensor.get_fb() (mengambil buffer bingkai snapshot terakhir), sensor.set_gain_ctrl(enable) (toggle AGC), dan sensor.set_exposure_ctrl(enable) (toggle AEC).

  • Citra — subskrip citra (img[i]) kini mendukung pembacaan dan penulisan piksel (skala abu-abu / RGB565 / JPEG); ditambahkan image.compress() di tempat dan kata kunci quality= pada fungsi JPEG; find_blobs() / find_markers() / find_features() kini mengembalikan daftar kosong (dapat diiterasi) alih-alih non-daftar saat tidak ada yang ditemukan.

  • Ditambahkan ~60 skrip contoh (kontrol papan, filter citra, pelacakan warna, deteksi wajah / mata / fitur, perisai WiFi) dan contoh deteksi iris kedua.

Perubahan dan peningkatan lainnya

  • image.histeq() kini bekerja pada citra RGB565, bukan hanya skala abu-abu.

Perbaikan bug

  • Menginisialisasi pyb.DAC saat boot agar DAC berfungsi (#121), memperbaiki image.dilate() yang rusak, korupsi byte nol client.send() WINC, iterasi ulang penggabungan blob, bug reinisialisasi buffer file yang merusak filesystem setelah penggunaan pertama, komputasi To_min / To_max thermopile (#113), dan menerapkan patch HAL I2C/DMA MicroPython upstream.

Dukungan perangkat keras dan papan

  • Perisai WiFi — WINC1500 diperbarui ke file papan Rev-B.

  • pyb.DAC — periferal DAC diaktifkan.

Perubahan API yang melanggar

Perubahan API yang terlihat pengguna antara v1.3.0 dan v1.4.0. Cakupan: C-modul Python 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.

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

find_blobs() / find_markers() ditulis ulang (major)

image.find_blobs() / find_markers() ditulis ulang untuk pelacakan berbasis warna: Anda kini meneruskan ambang batas warna (dan fungsi filter opsional) langsung alih-alih beroperasi pada citra yang telah disegmentasi, dan hasilnya adalah satu daftar datar tuple blob 10-elemen (dengan kolom kode warna) alih-alih pohon per-warna yang bersarang. Kerjakan ulang skrip pelacakan warna untuk meneruskan ambang batas warna dan mengiterasi daftar datar.

Commit: d1ff36602, 16daeb83a

Metode citra mandiri dihapus (major)

image.threshold, image.centroid(), image.orientation_radians(), image.orientation_degrees(), dan image.pixels() dihapus. Data centroid / orientasi / jumlah piksel kini tersedia sebagai kolom dari tuple blob yang dikembalikan oleh find_blobs().

Commit: 9e5d379c1

Perubahan nama metode imlib (major)

Beberapa metode citra diubah nama/diubah: image.subimg()image.copy(), image.blit()image.replace(), dan image.blend() diubah agar sesuai dengan operasi dua-citra lainnya. Metode image.scale() / scaled() / rainbow() dihapus (rainbow dipindahkan ke modul FIR). Perbarui panggilan ke nama baru.

Commit: b534dc6ff

find_eyes() diubah nama menjadi find_eye() (minor)

image.find_eyes() diubah nama menjadi image.find_eye() dan kini mengembalikan 2-tuple iris (x, y) alih-alih tuple mata sebelumnya. Ubah nama panggilan dan perbarui penanganan nilai kembalian.

Commit: 7a01a9bed

image.compress() diubah nama menjadi compressed() (minor)

image.compress() (yang mengembalikan citra JPEG baru) diubah nama menjadi image.compressed(); image.compress() baru justru mengompresi citra di tempat dan mengembalikan None. image.save() juga mendapatkan kata kunci quality= dan kini mengembalikan None alih-alih True. Migrasi img.compress(q) (yang mengharapkan citra yang dikembalikan) ke img.compressed(quality=q).

Commit: 367e5fdd3

Daftar periksa migrasi

Untuk port bersih ke v1.4.0, pekerjaan umumnya adalah:

  1. Kerjakan ulang kode pelacakan warna untuk meneruskan ambang batas warna ke find_blobs() / find_markers() dan mengiterasi daftar tuple blob datar (penulisan ulang find_blobs).

  2. Baca data centroid / orientasi / piksel dari tuple blob alih-alih metode mandiri yang dihapus (metode citra yang dihapus).

  3. Ubah nama subimgcopy, blitreplace, perbaiki panggilan blend(), dan ganti scale / scaled / rainbow (perubahan nama imlib).

  4. Ubah nama find_eyes()find_eye() (perubahan nama find_eye) dan compress()compressed() (perubahan nama compress).

Semua skrip lainnya berjalan tanpa perubahan.