v2.1.0¶
v2.1.0 devasa bir API modernleştirme sürümüdür. FREAK anahtar nokta tanımlayıcısını ORB ile değiştirir, find_blobs() / histogramları / istatistikleri nesne tabanlı API’lere dönüştürür, sensor otomatik pozlama/kazanç/beyaz dengesi işlevlerini yeniden adlandırır, QR kod tespiti ve OV7725 lens düzeltmesi ekler ve ilk OpenMV Cam M7 kartını çalışır hale getirir. Birçok API değişti — aşağıdaki kırıcı değişiklikleri okuyun.
Öne çıkanlar¶
ORB anahtar noktaları — FREAK tanımlayıcısı ORB ile değiştirildi (
find_keypoints()/match_descriptor()yeniden düzenlendi).Nesne API’leri —
find_blobs(),get_histogram(),get_statistics()artık adlandırılmış erişimcilere sahip nesneler döndürüyor.QR kodlar —
image.find_qrcodes()tespiti eklendi.OpenMV Cam M7 — ilk kart desteği.
Sensör —
set_auto_whitebal()/set_auto_gain()/set_auto_exposure()(yeniden adlandırıldı) veset_lens_correction().Kırıcı: anahtar nokta/tanımlayıcı, nokta (blob)/histogram/istatistik, sensör otomatik işlevi ve diğer birkaç API değişti — kırıcı değişikliklere bakın.
Yeni özellikler¶
OpenMV Cam M7 — ilk OpenMV 3 (M7) kart desteği eklendi.
QR kodlar — bir
qrcodes.pyörneğiyle birlikteimage.find_qrcodes()eklendi.ORB anahtar noktaları — yeni ORB tanımlayıcı sistemi: bir
corner_detectorargümanı (CORNER_FAST/CORNER_AGAST),max_keypoints/scale_factoriçerenfind_keypoints(); birfilter_outliersanahtar sözcüğü ve bir dönüş tahmini içerenmatch_descriptor(); anahtar nokta kaydet/yükle.Nesne API’leri —
image.get_histogram()/get_statistics()/get_percentile()histogram/istatistik nesneleri döndürür;find_blobs(),area_threshold/pixels_threshold/merge/margin/invertvex_stride/y_strideile nokta (blob) nesneleri (rect()/cx()/cy()/code()/area()/pixels()) döndürür.Sensör — OV7725 lens gölgeleme için
sensor.set_lens_correction(enable, radi, coef)eklendi,sensor.set_windowing()artık bir(w, h)demeti de kabul ediyor (otomatik ortalanmış) veimage.Image(..., copy_to_fb=True)/load_image(copy_to_fb=True).Renk izleme, Arduino SPI/I2C-slave, anahtar noktalar ve histogram/istatistik örnek betikleri eklendi.
Diğer değişiklikler ve iyileştirmeler¶
IDE artık çalışan bir
main.py‘yi kesebiliyor; daha hızlıfind_blobs()/find_qrcodes()/get_statistics(); ORB bir popcount Hamming mesafesi kullanıyor; lens düzeltmesi daha az RAM kullanıyor; bir Linuxudevkuralı ModemManager’ın seri portu ele geçirmesini engelliyor.
Hata düzeltmeleri¶
Kamera ve görüntüleme:
M7 DMA önbellek temizleme/geçersiz kılma (bozuk çerçeveler), her çerçevenin sonundaki sahte bir ekstra satır, JPEG çerçeve arabelleği (frame buffer) taşma sınırları,
compress()başarısızlığında çerçeve arabelleğinin serbest bırakılması, ORB doğruluğu / ROI / boş küme işleme veload_image(copy_to_fb=True)geometrisi düzeltildi.
Sistem:
F7 ADC desteği, bir OV7725 yazmaç adı, önyükleyici (bootloader)/USB zamanlaması düzeltildi, anlık görüntüleri beklerken WFI kullanıldı ve MJPEG akış örneği istemci başına zaman aşımlarıyla bloklamayan hale getirildi.
Donanım ve kart desteği¶
OpenMV Cam M7 (OpenMV 3) — ilk kart desteği.
OV7725 — lens düzeltme (gölgeleme) desteği.
Kırıcı API değişiklikleri¶
v2.0.0 ile v2.1.0 arasındaki kullanıcı tarafından görülebilen API kırılmaları. Kapsam: modules/ içindeki Python C modülleri ve scripts/libraries/ içindeki Python kitaplıkları.
Her değişiklik etkisine göre etiketlenmiştir:
major — özelliği kullanan çoğu betiği etkiler; kodu taşımanız gerekecek.
minor — dar kapsamlı API; yalnızca onu kullanan betikleri etkiler.
behavior — aynı API, farklı sonuçlar; ayarlanmış betikleri yeniden kontrol edin.
Değişiklikler bu sırayla etkilerine göre gruplanmıştır. Yalnızca kodunuzu taşımak istiyorsanız, sondaki taşıma kontrol listesine atlayın. Her commit hash’i GitHub’daki diff’ine bağlanır.
FREAK, ORB ile değiştirildi; tanımlayıcı API’si yeniden düzenlendi (major)¶
FREAK anahtar nokta tanımlayıcısı kaldırıldı ve ORB ile değiştirildi: image.FREAK artık mevcut değil (image.ORB kullanın). image.match_descriptor() / save_descriptor() / load_descriptor() artık baştaki bir tanımlayıcı tipi argümanı almıyor (nesneden çıkarsanır), match_descriptor() artık 8 öğeli bir demet (cx, cy, x, y, w, h, match_count, rotation) döndürüyor (son öğe bir yüzde değil ham bir sayıdır) ve draw_keypoints() ham bir (x, y, angle) listesi yerine bir anahtar nokta nesnesi gerektiriyor. find_keypoints(), değişen varsayılanlarla corner_detector / max_keypoints / scale_factor kazandı.
Sensör otomatik işlevi yeniden adlandırma (major)¶
sensor.set_whitebal() / set_gain_ctrl() / set_exposure_ctrl(), sensor.set_auto_whitebal() / set_auto_gain() / set_auto_exposure() olarak yeniden adlandırıldı (eski adlar kaldırıldı). Her biri, otomatik yerine manuel bir değer ayarlamak için isteğe bağlı bir value= anahtar sözcüğü kazandı.
Commits: 1b22a2961
Histogram / istatistik nesne API’lerine yeniden düzenlendi (major)¶
Histogram/istatistik yüzeyi, histogram/istatistik nesneleri döndüren nesne tabanlı image.get_histogram() / get_statistics() / get_percentile() biçimine yeniden düzenlendi. Eski düz histogram/istatistik sonuçları ve bin_count / l_bin_count / a_bin_count / b_bin_count yöntemleri kaldırıldı (len(histogram.bins()) vb. kullanın).
find_features() scale yeniden adlandırıldı (major)¶
image.find_features() (Haar), scale= anahtar sözcüğünü scale_factor= olarak yeniden adlandırdı. find_features(cascade, scale=...) çağrılarını scale_factor=... olarak güncelleyin.
Commits: 96e4f770c
find_blobs() nesneler döndürür; find_markers() kaldırıldı (minor)¶
image.find_blobs() artık adlandırılmış erişimcilere sahip nokta (blob) nesneleri döndürüyor (geriye dönük uyumluluk için indeks erişimi hâlâ çalışıyor) ve image.find_markers() kaldırıldı — bunun yerine find_blobs(..., merge=True, margin=...) kullanın. Gelişmiş renk noktası (blob) filtre geri çağırması (callback) artık desteklenmiyor.
Commits: af15ec6eb
img.copy_to_fb() değiştirildi (minor)¶
img.copy_to_fb() yöntemi, image.Image / load_image() üzerinde bir copy_to_fb= anahtar sözcüğüyle değiştirildi. Büyük görüntüleri doğrudan çerçeve arabelleğine (frame buffer) yüklemek için image.Image(path, copy_to_fb=True) kullanın.
Commits: 1645ab94b
compress() aralık dışı kaliteyi reddeder (behavior)¶
image.compress() / compressed() artık quality 1–100 dışında olduğunda sessizce kısıtlamak yerine bir hata üretiyor. Çağırmadan önce quality değerini 1–100 aralığına kısıtlayın. Ayrıca, OpenMV 3 JPEG arabelleği 64 KB’den 23000 bayta düşürüldü, bu nedenle büyük çerçeveler artık bellek yetersizliği hatası üretebilir — JPEG kalitesini veya çerçeve boyutunu düşürün.
lens_corr() yakınlaştırması artık işlevsel (behavior)¶
image.lens_corr() artık zoom argümanını gerçekten uyguluyor (önceden ayrıştırılıyor ama etkisizdi), bu nedenle varsayılan olmayan bir yakınlaştırma geçiren betikler için çıktı farklılaşıyor. lens_corr() ayarını yeniden kontrol edin.
Commits: d6b49adef
Taşıma kontrol listesi¶
v2.1.0’a temiz bir taşıma için tipik iş şudur:
image.FREAKyerineimage.ORBkullanın, tanımlayıcı tipi argümanını kaldırın vematch_descriptor()demet açımını /draw_keypoints()çağrısını anahtar nokta nesnesine güncelleyin (ORB yeniden düzenlemesi).sensor.set_whitebal()/set_gain_ctrl()/set_exposure_ctrl()çağrılarınıset_auto_*biçimlerine yeniden adlandırın (otomatik işlev yeniden adlandırma).Histogram/istatistik kodunu nesne yöntemlerine taşıyın (histogram/istatistik yeniden düzenlemesi).
find_features()scale=argümanınıscale_factor=olarak yeniden adlandırın (find_features yeniden adlandırma).Nokta (blob) nesnesi erişimcilerini kullanın ve
find_markers()çağrısınıfind_blobs(merge=True, ...)ile değiştirin (find_blobs değişikliği);img.copy_to_fb()çağrısınıcopy_to_fb=anahtar sözcüğüyle değiştirin (copy_to_fb değişikliği).compress()kalitesini 1–100 aralığına kısıtlayın ve OpenMV 3’te JPEG boyutlarını yeniden kontrol edin (compress değişikliği);lens_corr()yakınlaştırmasını yeniden ayarlayın (lens_corr değişikliği).
Diğer tüm betikler değişmeden çalışır.