v1.2.0#
v1.2.0, klasik OpenMV görüntüleme API’sinin büyük bir kısmını oluşturan temel ve çok büyük bir sürümdür: çizim yöntemleri, ikili / morfoloji işlemleri, anahtar nokta tanımlayıcıları (FAST / FREAK / LBP), renk dönüşümleri ve image.statistics, BMP / PPM / JPEG dosya G/Ç, lcd, mjpeg, gif ve mlx termal modülleri, OV7725 kamerası ve pek çok sensor denetimi. Bazı temel sensor davranışları değişti — aşağıdaki değişiklikleri okuyun.
Öne çıkanlar#
Çizim API’si —
draw_line()/draw_rectangle()/draw_circle()/draw_string()/draw_cross()/draw_keypoints().İkili / morfoloji —
binary(),invert(),and/or/xor/...,erode()/dilate()/morph(),negate()/difference().Anahtar noktalar —
match_descriptor()/save_descriptor()/load_descriptor()ile FAST / FREAK / LBP tanımlayıcıları.OV7725 kamera desteği;
image.statistics; BMP/PPM/JPEG dosya G/Ç.Bozucu değişiklik:
sensor.reset(),sensor.snapshot()vesensor.set_pixformat()davranışı değişti — bozucu değişikliklere bakın.
Yeni özellikler#
Çizim — anahtar sözcük argümanlarıyla (renk, kalınlık, …)
image.draw_line()/draw_rectangle()/draw_circle()/draw_string()/draw_cross()/draw_keypoints()eklendi.İkili / morfoloji —
image.binary(),invert(),and()/nand()/or()/nor()/xor()/xnor(),erode()/dilate()/morph(),negate()/difference(),pixels(),centroid(),orientation_radians()/orientation_degrees()vewidth()/height()/format()eklendi.Anahtar noktalar / tanımlayıcılar —
find_keypoints()ile FAST anahtar nokta çıkarımı, FREAK / LBP için birleşik birmatch_descriptor()ilesave_descriptor()/load_descriptor(), ayrıca bir profil-yüz Haar/LBP basamaklı sınıflandırıcısı.Renk / istatistikler —
image.statisticsve renk dönüştürme işlevleri (rgb_to_lab/lab_to_rgb/rgb_to_grayscale/grayscale_to_rgb).Dosya G/Ç — BMP / PPM (P2/P3/P5/P6) / JPEG yükleme ve kaydetme (gri tonlamalı JPEG ve 4:2:0 / 4:2:2 renklilik alt örneklemesi dahil).
Modüller — her biri örnek betiklerle birlikte yeni
lcd(LCD shield),mjpeg(video kaydı), renkligif(Gif.loop()ile) vemlxtermal kamera modülleri.Sensör —
sensor.get_id()(+ OV9650/OV2640/OV7725 PID sabitleri),sensor.set_special_effect()(SDE_* sabitleri),sensor.set_image_filter()(FILTER_BW / FILTER_SKIN),HQVGAçerçeve boyutu veimage.set_pixel(x, y, …)eklendi.WiFi — ATWINC1500 WiFi sürücüsü ve OpenMV 1/2 BSP temel altyapısı, ayrıca bir BLE örneği eklendi.
Diğer değişiklikler ve iyileştirmeler#
Çerçeve arabelleği (frame buffer) artık OpenMV IDE’ye akış aktarmadan önce JPEG ile sıkıştırılıyor (daha düşük bant genişliği); JPEG sıkıştırması yerinde yapılıyor; OV7725 Y/D yakınlaştırması rastgele ölçeklemeyi etkinleştiriyor; QVGA’da çalışan iyileştirilmiş (daha hızlı) Haar yüz tespiti.
Hata düzeltmeleri#
Görüntüleme:
İntegral görüntü hesaplaması,
median()filtresi bozulması, ağırlık merkezi hesaplaması, RGB girişinde RGB ten / siyah-beyaz filtreleri düzeltildi ve daha hızlı gri tonlamalı BMP/PPM okuma/yazma sağlandı.
Sensör ve sistem:
pyb.Servozamanlayıcıları (Servo artık çalışıyor), HQVGA çözünürlüğü, SD kart başlatma güvenilirliği, yazılımsal sıfırlamadan sonra depolamanın yeniden başlatılması ve bir betik bulunmadığında REPL’in yeniden çalıştırılması düzeltildi.
Donanım ve kart desteği#
OV7725 kamera sensörü.
LCD shield (
lcdmodülü),mlxtermal kamera ve ATWINC1500 WiFi temel altyapısı.
Bozucu API değişiklikleri#
v1.1.0 ile v1.2.0 arasındaki kullanıcıya görünür API değişiklikleri. Kapsam: modules/ içindeki Python C modülleri ve scripts/libraries/ içindeki Python kitaplıkları.
Üç bozucu değişikliğin tümü, temel sensor işlevlerinde davranış değişikliğidir (aynı API, farklı davranış) — etkilenen betikleri yeniden kontrol edin. Her commit hash’i GitHub’daki diff’ine bağlanır. (Bu sürümün büyük çoğunluğu v1.1→v1.2 aralığında oluşturulan yeni API’dir ve bu nedenle bozucu değil eklemelidir.)
sensor.reset() artık varsayılan bir yapılandırma uygulamıyor (davranış)#
sensor.reset() artık yerleşik bir varsayılan yapılandırma (pixformat / framesize / framerate / kazanç / kontrast / parlaklık / doygunluk) uygulamıyor. reset() çağrısının kullanılabilir bir varsayılan bırakmasına güvenen betikler artık reset() sonrasında açıkça sensor.set_pixformat() ve sensor.set_framesize() (ve diğer ayarları) çağırmalıdır.
Commit’ler: d1e782df3
sensor.snapshot() zaman aşımında hata fırlatıyor (davranış)#
sensor.snapshot() artık sensör zaman aşımına uğradığında süresiz olarak askıda kalmak yerine RuntimeError("Sensor Timeout!!") fırlatıyor. Zaman aşımlarını tolere etmeniz gerekiyorsa snapshot() çağrısını try / except RuntimeError ile sarmalayın.
Commit’ler: e3f41d674
sensor.set_pixformat() desteklenmeyen formatta hata fırlatıyor (davranış)#
sensor.set_pixformat() artık desteklenmeyen bir piksel formatı verildiğinde False döndürmek yerine bir istisna fırlatıyor. False dönüş değerini kontrol eden kodun bunun yerine istisnayı yakalaması gerekir.
Commit’ler: e0c5822c2
Geçiş kontrol listesi#
v1.2.0’a temiz bir geçiş için tipik iş şudur:
sensor.reset()sonrasındasensor.set_pixformat()/sensor.set_framesize()değerlerini açıkça ayarlayın (reset değişikliği).Sensör zaman aşımlarını tolere etmeniz gerekiyorsa
sensor.snapshot()çağrısınıtry/except RuntimeErrorile sarmalayın (snapshot değişikliği).Falsedeğerini kontrol etmek yerinesensor.set_pixformat()işlevinden gelen istisnayı yakalayın (set_pixformat değişikliği).
Diğer tüm betikler değişmeden çalışır.