v2.4.0¶
v2.4.0, find_lines() fonksiyonunu bir Hough dönüşümü dedektörü olarak yeniden yazar, find_line_segments(), find_datamatrices() veri matrisi çözme, sensor.set_vsync_output(), görüntü dilimi okuma/yazma ve daha yüksek FPS için birçok yeni ölçeklenmiş çerçeve boyutu ekler. find_lines(), match_descriptor() ve skip_frames() değişti — aşağıdaki bozucu değişiklikleri okuyun.
Öne çıkanlar¶
find_lines()— çizgi nesneleri döndüren bir Hough dönüşümü çizgi dedektörü olarak yeniden yazıldı (artık yalnızca gri tonlamada değil RGB565’te de çalışır).find_line_segments()— sonlu çizgi parçalarını tespit eder.find_datamatrices()— veri matrisi çözme.sensor.set_vsync_output()— kamera senkronizasyonu için bir G/Ç pininde VSYNC’i sürer.Daha fazla çerçeve boyutu — daha yüksek FPS için birçok ek ölçeklenmiş çözünürlük.
Bozucu:
find_lines(),match_descriptor()veskip_frames()değişti — bozucu değişikliklere bakın.
Yeni özellikler¶
image.find_line_segments()— sonsuz olmayan çizgi parçalarını bulur; çizgi nesneleri bir.length()erişimcisi kazandı.image.find_datamatrices()— örnek betiklerle birlikte veri matrisi çözme.sensor.set_vsync_output(pin)— kamera senkronizasyonu için VSYNC sinyalini bir GPIO pininde çıkarır (OpenMV 2 / OpenMV 3).Görüntü dilimleri — görüntü alt simgesi / arabellek protokolü artık görüntü verisinin dilimlerini okumayı ve yazmayı destekler.
Daha yüksek kare hızlarını desteklemek için birçok ek ölçeklenmiş çözünürlük / çerçeve boyutu kombinasyonu eklendi;
clock.fps()artık birikticilerini her 2 sn’de bir sıfırlar, böylece bildirilen FPS güncel hızı izler.
Diğer değişiklikler ve iyileştirmeler¶
OV7725, çözünürlük ≤ VGA olduğunda QVGA’ya pencereleniyor (yüksek yakalama hızlarında daha az kare düşmesi) ve PLL’si azaltılmış bir harici saatle 6× olarak ayarlandı (OpenMV 2 48 MHz, OpenMV 3 54 MHz), bu da sensör çerçeve zamanlamasını değiştirdi.
Hata düzeltmeleri¶
Görüntüleme:
compress_for_ide()arabellek boyutu hatası (başlangıç/bitiş işaretçisi), QR çözme (artı yukarı akış quirc hücre-bit eşlemi indeksleme ve hizalama deseni sınır düzeltmeleri) düzeltildi.
Sensör ve bağlanabilirlik:
Daha yüksek sensör PLL’siyle çalışmak için OpenMV 2 sensör saati düşürüldü (kamera başlatma/senkronizasyon) ve WINC
socket.recvfrom()fonksiyonunun gerçek alınan boyutu döndürmesi sağlandı (eski bir değer döndürmek yerine pozitif olmayan bir boyutta hata verir).
Donanım ve kart desteği¶
sensor.set_vsync_output()fonksiyonunu destekleyen, bir GPIO pininde VSYNC çıkışı (OpenMV 2 / OpenMV 3).OpenMV 3 —
pyb.UARTUART1 etkinleştirildi.
Bozucu API değişiklikleri¶
v2.3.0 ile v2.4.0 arasındaki kullanıcıya görünür API bozulmaları. Kapsam: modules/ içindeki Python C modülleri ve scripts/libraries/ içindeki Python kütüphaneleri.
Her değişiklik etkisiyle etiketlenmiştir:
büyük — özelliği kullanan çoğu betiği etkiler; kodu taşımanız gerekecektir.
küçük — dar API; yalnızca onu kullanan betikleri etkiler.
davranış — aynı API, farklı sonuçlar; ince ayarlı betikleri yeniden kontrol edin.
Değişiklikler bu sırayla etkilerine göre gruplandırılmıştır. Sadece kodunuzu taşımak istiyorsanız, sondaki taşıma kontrol listesi bölümüne atlayın. Her commit hash’i, GitHub üzerindeki diff’ine bağlanır.
find_lines() bir Hough dedektörü olarak yeniden yazıldı (büyük)¶
image.find_lines() bir Hough dönüşümü dedektörü olarak yeniden yazıldı. Artık bir (x1, y1, x2, y2) demet listesi döndürmüyor — çizgi nesneleri döndürüyor (.line() / .x1() / .y1() / .x2() / .y2() / .theta() / .rho() / .magnitude()) — ve artık RGB565’te de çalışıyor (yalnızca gri tonlamada değil). threshold argümanı 0.0–1.0 float değerinden bir tamsayı kenar büyüklüğü toplamına değişti, line.magnitude artık bir tamsayı ve yeni theta_margin / rho_margin anahtar kelimeleri eklendi. Demet açma (tuple-unpacking) kodunu çizgi nesnelerine taşıyın ve threshold değerini yeniden ayarlayın.
match_descriptor() bir eşleşme nesnesi döndürür (küçük)¶
image.match_descriptor() (ORB) artık düz bir 8’li demet yerine .cx() / .cy() / .x() / .y() / .w() / .h() / .count() / .theta() / .rect() erişimcilerine sahip bir kptmatch nesnesi döndürür. Nesne hâlâ alt simgelenebilir/dilimlenebilir olduğundan konumsal indeksleme çalışmaya devam eder, ancak isinstance(result, tuple) yapan (veya demet metotlarını kullanan) kod yeni erişimcileri kullanmalıdır.
Commit’ler: e960546b6
sensor.skip_frames() artık zaman tabanlıdır (davranış)¶
sensor.skip_frames(), bir time= anahtar kelimesini (varsayılan ~300 ms) kabul edecek şekilde yeniden tasarlandı ve artık sabit bir çerçeve sayısı yerine varsayılan olarak zaman tabanlıdır; süre dolduğunda erken durur. Tam bir çerçeve sayısına dayanan betikler açık bir sayı geçmeli ve/veya buna göre time= ayarlamalıdır.
Commit’ler: a039b5d1c
Taşıma kontrol listesi¶
v2.4.0’a temiz bir taşıma için tipik iş şudur:
find_lines()demet açmasını çizgi nesnelerine taşıyın ve tamsayıthresholddeğerini yeniden ayarlayın (find_lines yeniden yazımı).match_descriptor()sonuçlarını bir demet olarak ele almak yerinekptmatcherişimcilerini kullanın (match_descriptor değişikliği).Sabit bir çerçeve sayısına dayandıysanız
sensor.skip_frames()fonksiyonuna açık bir sayı ve/veyatime=geçin (skip_frames değişikliği).
Diğer tüm betikler değişmeden çalışır.