v1.2.0

v1.2.0 adalah rilis besar fondasi yang membangun sebagian besar API pencitraan OpenMV klasik: metode gambar, operasi biner / morfologi, deskriptor titik kunci (FAST / FREAK / LBP), konversi warna dan image.statistics, I/O file BMP / PPM / JPEG, modul thermal lcd, mjpeg, gif, dan mlx, kamera OV7725, serta banyak kontrol sensor. Beberapa perilaku inti sensor berubah — baca perubahan yang melanggar di bawah ini.

Sorotan

  • API Gambardraw_line() / draw_rectangle() / draw_circle() / draw_string() / draw_cross() / draw_keypoints().

  • Biner / morfologibinary(), invert(), and/or/xor/..., erode() / dilate() / morph(), negate() / difference().

  • Titik kunci — deskriptor FAST / FREAK / LBP dengan match_descriptor() / save_descriptor() / load_descriptor().

  • Modul barulcd, mjpeg, gif (warna), dan thermal mlx.

  • Dukungan kamera OV7725; image.statistics; I/O file BMP/PPM/JPEG.

  • Melanggar: perilaku sensor.reset(), sensor.snapshot(), dan sensor.set_pixformat() berubah — lihat perubahan yang melanggar.

Fitur baru

  • Gambar — ditambahkan image.draw_line() / draw_rectangle() / draw_circle() / draw_string() / draw_cross() / draw_keypoints() dengan argumen kata kunci (warna, ketebalan, …).

  • Biner / morfologi — ditambahkan image.binary(), invert(), and() / nand() / or() / nor() / xor() / xnor(), erode() / dilate() / morph(), negate() / difference(), pixels(), centroid(), orientation_radians() / orientation_degrees(), serta width() / height() / format().

  • Titik kunci / deskriptor — ekstraksi titik kunci FAST melalui find_keypoints(), match_descriptor() terpadu dan save_descriptor() / load_descriptor() untuk FREAK / LBP, ditambah Haar/LBP cascade wajah profil.

  • Warna / statistikimage.statistics dan fungsi konversi warna (rgb_to_lab / lab_to_rgb / rgb_to_grayscale / grayscale_to_rgb).

  • I/O File — muat dan simpan BMP / PPM (P2/P3/P5/P6) / JPEG (termasuk JPEG skala abu-abu dan subsampling chroma 4:2:0 / 4:2:2).

  • Modul — modul baru lcd (perisai LCD), mjpeg (perekaman video), gif warna (dengan Gif.loop()), dan modul kamera thermal mlx, masing-masing dengan skrip contoh.

  • Sensor — ditambahkan sensor.get_id() (+ konstanta PID OV9650/OV2640/OV7725), sensor.set_special_effect() (konstanta SDE_*), sensor.set_image_filter() (FILTER_BW / FILTER_SKIN), ukuran bingkai HQVGA, dan image.set_pixel(x, y, …).

  • WiFi — ditambahkan driver WiFi ATWINC1500 dan landasan BSP OpenMV 1/2, ditambah contoh BLE.

Perubahan dan peningkatan lainnya

  • Buffer bingkai kini dikompresi JPEG sebelum dialirkan ke OpenMV IDE (bandwidth lebih rendah); kompresi JPEG dilakukan di tempat; zoom H/V OV7725 memungkinkan penskalaan sewenang-wenang; deteksi wajah Haar yang lebih baik (lebih cepat) yang berjalan pada QVGA.

Perbaikan bug

Pencitraan:

  • Memperbaiki komputasi integral-image, kerusakan filter median(), komputasi centroid, filter kulit RGB / hitam-putih pada input RGB, serta baca/tulis BMP/PPM skala abu-abu yang lebih cepat.

Sensor dan sistem:

  • Memperbaiki timer pyb.Servo (Servo kini berfungsi), resolusi HQVGA, keandalan inisialisasi kartu SD, reinisialisasi penyimpanan setelah soft-reset, dan menjalankan ulang REPL saat tidak ada skrip.

Dukungan perangkat keras dan papan

  • Sensor kamera OV7725.

  • Perisai LCD (modul lcd), kamera thermal mlx, dan landasan WiFi ATWINC1500.

Perubahan API yang melanggar

Perubahan API yang terlihat pengguna antara v1.1.0 dan v1.2.0. Cakupan: C-modul Python di modules/ dan pustaka Python di scripts/libraries/.

Ketiga perubahan yang melanggar adalah perubahan behavior pada fungsi inti sensor (API sama, perilaku berbeda) — periksa ulang skrip yang terpengaruh. Setiap hash commit menautkan ke diff-nya di GitHub. (Sebagian besar rilis ini adalah API baru yang dibangun dalam rentang v1.1→v1.2 dan bersifat tambahan, bukan melanggar.)

sensor.reset() tidak lagi menerapkan konfigurasi default (behavior)

sensor.reset() tidak lagi menerapkan konfigurasi default bawaan (pixformat / framesize / framerate / gain / kontras / kecerahan / saturasi). Skrip yang mengandalkan reset() untuk meninggalkan default yang dapat digunakan harus kini secara eksplisit memanggil sensor.set_pixformat() dan sensor.set_framesize() (dan pengaturan lainnya) setelah reset().

Commit: d1e782df3

sensor.snapshot() memunculkan pengecualian saat timeout (behavior)

sensor.snapshot() kini memunculkan RuntimeError("Sensor Timeout!!") saat sensor timeout alih-alih menggantung tanpa batas. Bungkus snapshot() dalam try / except RuntimeError jika Anda perlu menoleransi timeout.

Commit: e3f41d674

sensor.set_pixformat() memunculkan pengecualian pada format yang tidak didukung (behavior)

sensor.set_pixformat() kini memunculkan pengecualian saat diberi format piksel yang tidak didukung alih-alih mengembalikan False. Kode yang memeriksa nilai kembalian False harus menangkap pengecualian tersebut.

Commit: e0c5822c2

Daftar periksa migrasi

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

  1. Setel secara eksplisit sensor.set_pixformat() / sensor.set_framesize() setelah sensor.reset() (perubahan reset).

  2. Bungkus sensor.snapshot() dalam try / except RuntimeError jika Anda perlu menoleransi timeout sensor (perubahan snapshot).

  3. Tangkap pengecualian dari sensor.set_pixformat() alih-alih memeriksa False (perubahan set_pixformat).

Semua skrip lainnya berjalan tanpa perubahan.