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() ve skip_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 3pyb.UART UART1 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.

Commit’ler: 31b7b5bf3, f4a9c6154

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:

  1. find_lines() demet açmasını çizgi nesnelerine taşıyın ve tamsayı threshold değerini yeniden ayarlayın (find_lines yeniden yazımı).

  2. match_descriptor() sonuçlarını bir demet olarak ele almak yerine kptmatch erişimcilerini kullanın (match_descriptor değişikliği).

  3. Sabit bir çerçeve sayısına dayandıysanız sensor.skip_frames() fonksiyonuna açık bir sayı ve/veya time= geçin (skip_frames değişikliği).

Diğer tüm betikler değişmeden çalışır.