v2.1.0¶
v2.1.0 adalah rilis modernisasi API yang masif. Rilis ini mengganti deskriptor titik kunci FREAK dengan ORB, merombak find_blobs() / histogram / statistik menjadi API berbasis objek, mengganti nama fungsi eksposur otomatis/gain/keseimbangan putih sensor, menambahkan deteksi kode QR dan koreksi lensa OV7725, serta menghadirkan dukungan awal papan OpenMV Cam M7. Banyak API yang berubah — baca perubahan yang merusak kompatibilitas di bawah ini.
Highlights¶
Titik kunci ORB — deskriptor FREAK diganti dengan ORB (
find_keypoints()/match_descriptor()dirombak).API Objek —
find_blobs(),get_histogram(),get_statistics()kini mengembalikan objek dengan aksessor bernama.Kode QR — deteksi
image.find_qrcodes()ditambahkan.OpenMV Cam M7 — dukungan papan awal.
Sensor —
set_auto_whitebal()/set_auto_gain()/set_auto_exposure()(diganti nama) danset_lens_correction().Merusak kompatibilitas: titik kunci/deskriptor, blob/histogram/statistik, fungsi otomatis sensor, dan beberapa API lainnya berubah — lihat perubahan yang merusak kompatibilitas.
Fitur baru¶
OpenMV Cam M7 — ditambahkan dukungan papan OpenMV 3 (M7) awal.
Kode QR — ditambahkan
image.find_qrcodes()dengan contohqrcodes.py.Titik kunci ORB — sistem deskriptor ORB baru:
find_keypoints()dengan argumencorner_detector(CORNER_FAST/CORNER_AGAST),max_keypoints/scale_factor;match_descriptor()dengan kata kuncifilter_outliersdan perkiraan rotasi; simpan/muat titik kunci.API Objek —
image.get_histogram()/get_statistics()/get_percentile()mengembalikan objek histogram/statistik;find_blobs()mengembalikan objek blob (rect()/cx()/cy()/code()/area()/pixels()) denganarea_threshold/pixels_threshold/merge/margin/invertdanx_stride/y_stride.Sensor — ditambahkan
sensor.set_lens_correction(enable, radi, coef)untuk shading lensa OV7725,sensor.set_windowing()kini juga menerima tuple(w, h)(dipusatkan otomatis), danimage.Image(..., copy_to_fb=True)/load_image(copy_to_fb=True).Ditambahkan skrip contoh untuk pelacakan warna, SPI/I2C-slave Arduino, titik kunci, dan histogram/statistik.
Perubahan dan peningkatan lainnya¶
IDE kini dapat menginterupsi
main.pyyang sedang berjalan;find_blobs()/find_qrcodes()/get_statistics()lebih cepat; ORB menggunakan jarak Hamming popcount; koreksi lensa menggunakan lebih sedikit RAM; aturanudevLinux mencegah ModemManager mengambil alih port serial.
Perbaikan bug¶
Kamera dan pencitraan:
Memperbaiki pembersihan/invalidasi cache DMA M7 (bingkai yang rusak), baris ekstra yang muncul di akhir setiap bingkai, overflow batas buffer bingkai JPEG, pembebasan buffer bingkai saat kegagalan
compress(), akurasi ORB / ROI / penanganan set kosong, dan geometriload_image(copy_to_fb=True).
Sistem:
Memperbaiki dukungan ADC F7, nama register OV7725, waktu bootloader/USB, menggunakan WFI saat menunggu snapshot, dan membuat contoh streamer MJPEG tidak memblokir dengan batas waktu per klien.
Dukungan perangkat keras dan papan¶
OpenMV Cam M7 (OpenMV 3) — dukungan papan awal.
OV7725 — dukungan koreksi lensa (shading).
Perubahan API yang merusak kompatibilitas¶
Perubahan API yang terlihat oleh pengguna antara v2.0.0 dan v2.1.0. Cakupan: modul C Python di modules/ dan pustaka Python di scripts/libraries/.
Setiap perubahan diberi tag dengan dampaknya:
major — mempengaruhi sebagian besar skrip yang menggunakan fitur tersebut; Anda perlu mem-port kode.
minor — API sempit; hanya mempengaruhi skrip yang menggunakannya.
behavior — API sama, hasil berbeda; periksa kembali skrip yang telah disetel.
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.
FREAK diganti dengan ORB; API deskriptor dirombak (major)¶
Deskriptor titik kunci FREAK dihapus dan diganti dengan ORB: image.FREAK tidak lagi ada (gunakan image.ORB). image.match_descriptor() / save_descriptor() / load_descriptor() tidak lagi mengambil argumen tipe deskriptor di depan (disimpulkan dari objek), match_descriptor() kini mengembalikan tuple 8-elemen (cx, cy, x, y, w, h, match_count, rotation) (elemen terakhir adalah hitungan mentah, bukan persentase), dan draw_keypoints() memerlukan objek titik kunci alih-alih daftar (x, y, angle) mentah. find_keypoints() mendapatkan corner_detector / max_keypoints / scale_factor dengan nilai default yang berubah.
Penggantian nama fungsi otomatis sensor (major)¶
sensor.set_whitebal() / set_gain_ctrl() / set_exposure_ctrl() diganti nama menjadi sensor.set_auto_whitebal() / set_auto_gain() / set_auto_exposure() (nama lama dihapus). Masing-masing mendapatkan kata kunci opsional value= untuk menetapkan nilai manual alih-alih otomatis.
Commits: 1b22a2961
Histogram / statistik dirombak menjadi API objek (major)¶
Antarmuka histogram/statistik dirombak menjadi image.get_histogram() / get_statistics() / get_percentile() berbasis objek yang mengembalikan objek histogram/statistik. Hasil histogram/statistik datar yang lama dan metode bin_count / l_bin_count / a_bin_count / b_bin_count dihapus (gunakan len(histogram.bins()) dll.).
scale pada find_features() diganti nama (major)¶
image.find_features() (Haar) mengganti nama kata kunci scale= menjadi scale_factor=. Perbarui panggilan find_features(cascade, scale=...) menjadi scale_factor=....
Commits: 96e4f770c
find_blobs() mengembalikan objek; find_markers() dihapus (minor)¶
image.find_blobs() kini mengembalikan objek blob dengan aksessor bernama (akses indeks masih berfungsi untuk kompatibilitas mundur), dan image.find_markers() dihapus — gunakan find_blobs(..., merge=True, margin=...) sebagai gantinya. Callback filter blob berwarna lanjutan tidak lagi didukung.
Commits: af15ec6eb
img.copy_to_fb() digantikan (minor)¶
Metode img.copy_to_fb() digantikan oleh kata kunci copy_to_fb= pada image.Image / load_image(). Gunakan image.Image(path, copy_to_fb=True) untuk memuat citra besar langsung ke buffer bingkai.
Commits: 1645ab94b
compress() menolak kualitas di luar rentang (behavior)¶
image.compress() / compressed() kini mengeluarkan error ketika quality berada di luar rentang 1–100 alih-alih secara diam-diam membatasi nilainya. Batasi quality ke 1–100 sebelum memanggil. Secara terpisah, buffer JPEG OpenMV 3 dikurangi dari 64 KB menjadi 23000 byte, sehingga bingkai besar kini dapat mengeluarkan error kehabisan memori — kurangi kualitas JPEG atau ukuran bingkai.
Zoom lens_corr() kini berfungsi (behavior)¶
image.lens_corr() kini benar-benar menerapkan argumen zoom-nya (sebelumnya diurai tetapi tidak efektif), sehingga output berbeda untuk skrip yang melewatkan zoom non-default. Periksa kembali penyetelan lens_corr().
Commits: d6b49adef
Daftar periksa migrasi¶
Untuk port yang bersih ke v2.1.0, pekerjaan umum yang perlu dilakukan adalah:
Ganti
image.FREAKdenganimage.ORB, hapus argumen tipe deskriptor, dan perbarui pembongkaran tuplematch_descriptor()/draw_keypoints()ke objek titik kunci (perombakan ORB).Ganti nama
sensor.set_whitebal()/set_gain_ctrl()/set_exposure_ctrl()ke bentukset_auto_*(penggantian nama fungsi otomatis).Pindahkan kode histogram/statistik ke metode objek (perombakan histogram/statistik).
Ganti nama
scale=padafind_features()menjadiscale_factor=(penggantian nama find_features).Gunakan aksessor objek blob dan ganti
find_markers()denganfind_blobs(merge=True, ...)(perubahan find_blobs); gantiimg.copy_to_fb()dengan kata kuncicopy_to_fb=(perubahan copy_to_fb).Batasi kualitas
compress()ke 1–100 dan periksa kembali ukuran JPEG pada OpenMV 3 (perubahan compress); setel ulang zoomlens_corr()(perubahan lens_corr).
Semua skrip lainnya berjalan tanpa perubahan.