v2.4.0¶
v2.4.0 menulis ulang find_lines() sebagai detektor transformasi Hough, menambahkan find_line_segments(), dekoding data-matrix find_datamatrices(), sensor.set_vsync_output(), baca/tulis irisan citra, dan banyak ukuran bingkai bertingkat baru untuk FPS yang lebih tinggi. find_lines(), match_descriptor(), dan skip_frames() berubah — baca perubahan yang merusak kompatibilitas di bawah ini.
Highlights¶
find_lines()— ditulis ulang sebagai detektor garis transformasi Hough yang mengembalikan objek garis (kini bekerja pada RGB565, bukan hanya skala abu-abu).find_line_segments()— mendeteksi segmen garis terbatas.find_datamatrices()— dekoding data-matrix.sensor.set_vsync_output()— menggerakkan VSYNC pada pin I/O untuk sinkronisasi kamera.Lebih banyak ukuran bingkai — banyak resolusi bertingkat tambahan untuk FPS yang lebih tinggi.
Merusak kompatibilitas:
find_lines(),match_descriptor(), danskip_frames()berubah — lihat perubahan yang merusak kompatibilitas.
Fitur baru¶
image.find_line_segments()— menemukan segmen garis non-tak-hingga; objek garis mendapatkan aksessor.length().image.find_datamatrices()— dekoding data-matrix, dengan skrip contoh.sensor.set_vsync_output(pin)— mengeluarkan sinyal VSYNC pada pin GPIO untuk sinkronisasi kamera (OpenMV 2 / OpenMV 3).Irisan citra — protokol subskrip / buffer citra kini mendukung pembacaan dan penulisan irisan data citra.
Ditambahkan banyak kombinasi resolusi / ukuran bingkai bertingkat tambahan untuk mendukung laju bingkai yang lebih tinggi;
clock.fps()kini mereset akumulatornya setiap 2 detik sehingga FPS yang dilaporkan mencerminkan laju terkini.
Perubahan dan peningkatan lainnya¶
OV7725 di-window ke QVGA ketika resolusi ≤ VGA (lebih sedikit bingkai yang dijatuhkan pada laju pengambilan gambar tinggi) dan PLL-nya diatur ke 6× dengan clock eksternal yang dikurangi (OpenMV 2 48 MHz, OpenMV 3 54 MHz), mengubah waktu bingkai sensor.
Perbaikan bug¶
Pencitraan:
Memperbaiki error ukuran buffer
compress_for_ide()(marker awal/akhir), dekoding QR (plus perbaikan upstream quirc untuk pengindeksan bitmap sel dan batas pola penyelarasan).
Sensor dan konektivitas:
Menurunkan clock sensor OpenMV 2 agar berfungsi dengan PLL sensor yang lebih tinggi (inisialisasi/sinkronisasi kamera) dan membuat
socket.recvfrom()WINC mengembalikan ukuran yang sebenarnya diterima (mengeluarkan error pada ukuran non-positif alih-alih mengembalikan nilai basi).
Dukungan perangkat keras dan papan¶
Output VSYNC pada pin GPIO (OpenMV 2 / OpenMV 3) yang mendukung
sensor.set_vsync_output().OpenMV 3 — mengaktifkan
pyb.UARTUART1.
Perubahan API yang merusak kompatibilitas¶
Perubahan API yang terlihat oleh pengguna antara v2.3.0 dan v2.4.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.
find_lines() ditulis ulang sebagai detektor Hough (major)¶
image.find_lines() ditulis ulang sebagai detektor transformasi Hough. Fungsi ini tidak lagi mengembalikan daftar tuple (x1, y1, x2, y2) — melainkan mengembalikan objek garis (.line() / .x1() / .y1() / .x2() / .y2() / .theta() / .rho() / .magnitude()) — dan kini juga bekerja pada RGB565 (bukan hanya skala abu-abu). Argumen threshold berubah dari float 0,0–1,0 menjadi jumlah magnitudo tepi integer, line.magnitude kini berupa integer, dan kata kunci baru theta_margin / rho_margin ditambahkan. Port kode pembongkaran tuple ke objek garis dan setel ulang threshold.
match_descriptor() mengembalikan objek kecocokan (minor)¶
image.match_descriptor() (ORB) kini mengembalikan objek kptmatch dengan aksessor .cx() / .cy() / .x() / .y() / .w() / .h() / .count() / .theta() / .rect() alih-alih tuple 8-elemen biasa. Objek ini masih dapat disubskrip/diiris sehingga pengindeksan posisional tetap berfungsi, tetapi kode yang melakukan isinstance(result, tuple) (atau menggunakan metode tuple) harus menggunakan aksessor baru.
Commits: e960546b6
sensor.skip_frames() kini berbasis waktu (behavior)¶
sensor.skip_frames() dirombak untuk menerima kata kunci time= (default ~300 ms) dan kini berbasis waktu secara default alih-alih menjalankan hitungan bingkai tetap, berhenti lebih awal setelah waktu berlalu. Skrip yang mengandalkan hitungan bingkai yang tepat harus melewatkan hitungan eksplisit dan/atau mengatur time= yang sesuai.
Commits: a039b5d1c
Daftar periksa migrasi¶
Untuk port yang bersih ke v2.4.0, pekerjaan umum yang perlu dilakukan adalah:
Port pembongkaran tuple
find_lines()ke objek garis dan setel ulangthresholdinteger (penulisan ulang find_lines).Gunakan aksessor
kptmatchalih-alih memperlakukan hasilmatch_descriptor()sebagai tuple (perubahan match_descriptor).Lewatkan hitungan eksplisit dan/atau
time=kesensor.skip_frames()jika Anda mengandalkan hitungan bingkai tetap (perubahan skip_frames).
Semua skrip lainnya berjalan tanpa perubahan.