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’sidraw_line() / draw_rectangle() / draw_circle() / draw_string() / draw_cross() / draw_keypoints().

  • İkili / morfolojibinary(), invert(), and/or/xor/..., erode() / dilate() / morph(), negate() / difference().

  • Anahtar noktalarmatch_descriptor() / save_descriptor() / load_descriptor() ile FAST / FREAK / LBP tanımlayıcıları.

  • Yeni modüllerlcd, mjpeg, gif (renkli) ve mlx termal.

  • OV7725 kamera desteği; image.statistics; BMP/PPM/JPEG dosya G/Ç.

  • Bozucu değişiklik: sensor.reset(), sensor.snapshot() ve sensor.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 / morfolojiimage.binary(), invert(), and() / nand() / or() / nor() / xor() / xnor(), erode() / dilate() / morph(), negate() / difference(), pixels(), centroid(), orientation_radians() / orientation_degrees() ve width() / height() / format() eklendi.

  • Anahtar noktalar / tanımlayıcılarfind_keypoints() ile FAST anahtar nokta çıkarımı, FREAK / LBP için birleşik bir match_descriptor() ile save_descriptor() / load_descriptor(), ayrıca bir profil-yüz Haar/LBP basamaklı sınıflandırıcısı.

  • Renk / istatistiklerimage.statistics ve 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ı), renkli gif (Gif.loop() ile) ve mlx termal kamera modülleri.

  • Sensörsensor.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 ve image.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.Servo zamanlayı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 (lcd modülü), mlx termal 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:

  1. sensor.reset() sonrasında sensor.set_pixformat() / sensor.set_framesize() değerlerini açıkça ayarlayın (reset değişikliği).

  2. Sensör zaman aşımlarını tolere etmeniz gerekiyorsa sensor.snapshot() çağrısını try / except RuntimeError ile sarmalayın (snapshot değişikliği).

  3. False değerini kontrol etmek yerine sensor.set_pixformat() işlevinden gelen istisnayı yakalayın (set_pixformat değişikliği).

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