v2.7.0¶
يحدّث الإصدار v2.7.0 واجهة الكسب التلقائي / التعريض التلقائي / موازنة البياض في وحدة sensor لتستخدم وحدات فيزيائية (ديسيبل / ميكروثانية)، ويُعيد هيكلة find_displacement() القائمة على ارتباط الطور (مع إضافة الدوران/التحجيم)، ويضيف get_similarity() (SSIM)، وchrominvar() / illuminvar()، ومخازن إطارات إضافية، ومكتبة MQTT. إنه إصدار كاسر كبير — اقرأ التغييرات الكاسرة أدناه.
أبرز النقاط¶
واجهة مستشعر حديثة — تستخدم
set_auto_gain()/set_auto_exposure()/set_auto_whitebal()الآن الديسيبل / الميكروثانية، مع الدوال المقابلةget_gain_db()/get_exposure_us()/get_rgb_gain_db().ارتباط الطور — أُعيدت هيكلة
find_displacement()مع الدوران / التحجيم وfind_rotscale()/linpolar()/logpolar().SSIM — التشابه البنيوي
image.get_similarity().مخازن إطارات إضافية —
sensor.alloc_extra_fb()/dealloc_extra_fb().MQTT — مكتبة MQTT جديدة.
كاسر: تغيّرت واجهة كسب/تعريض/موازنة بياض المستشعر، و
find_displacement()/ أحجام إطارات FFT، وfind_number()، وأدوات برنامج WINC الثابت، وz_rotation()لـ AprilTag — راجع التغييرات الكاسرة.
ميزات جديدة¶
المستشعر — أُضيفت
sensor.get_gain_db()، وsensor.get_exposure_us()، وsensor.get_rgb_gain_db()، ومعاملgain_db_ceilingعلىset_auto_gain()، ودعمhmirror/vflipلـ MT9V034، وsensor.alloc_extra_fb()/sensor.dealloc_extra_fb()لمخازن إطارات إضافية في الـ RAM.الصورة — أُضيفت
remove_shadows()، وmin()/max()(فرق الإطارات)، وget_similarity()(SSIM) مع مثال على التشابه البنيوي، وchrominvar()/illuminvar()، وfind_rotscale()، وlinpolar()/logpolar()، ومعاملات threshold / offset / invert على المرشحات التكيفيةmean()/mode()/median()/midpoint()، وlen()/ الفهرسة على كائن النقاط المفتاحية، ومُلحِق.match()على كائن مطابقة النقاط المفتاحية.المكتبات / الشبكة — أُضيفت مكتبة MQTT (مع مثال MQTT عبر WiFi) ووضع
network.WINC.MODE_BSPلبرمجة برنامج WINC الثابت عبر UART التنقيح.الأمثلة — أُضيفت أمثلة منخفضة الطاقة
deep_sleep.py/stop_mode.py، والتدفق الضوئي المتقدم، وبرامج نصية لأمثلة الإحداثيات القطبية الخطية/اللوغاريتمية؛ ويحلّل البرنامج الثابت الآنuart.iniعند الإقلاع لتمكين REPL عبر UART.
تغييرات وتحسينات أخرى¶
اكتسبت
get_regression()معامليarea_threshold/pixels_thresholdوانحداراً قوياً أسرع (لتتبّع الخطوط / السباق)؛ وتدعمget_pixel()الآن صور Bayer؛ وأُضيفت أعمال تأسيسية لـ STM32H7 (ترويسات CMSIS / HAL / محمّل الإقلاع — لوحة H7 غير قابلة للاستخدام بعد)؛ وحُدِّث برنامج WINC1500 الثابت المرفق (19.4.4 / 19.5.2).
إصلاحات الأخطاء¶
التصوير:
أُصلح خطأ تجاوز الحدود في بحث المعيّن ضمن
find_template()، وتلفlogpolar/linpolar، وانفلاتilluminvar()عند قيم لون قريبة من الصفر.
المستشعر والنظام:
أُصلحت أخطاء التحكم بالكسب التلقائي، واستُعيد حجم
MAIN_FBعندsnapshot()(بحيث يعملcopy_to_fbبدقة مختلفة، وإعادة تحجيم مخزن الإطارات، وتجميع التدفق الضوئي من جديد)، ومهلةgethostbynameفي WINC، ومسح الحالةpydfuعلى محمّل إقلاع H7، وأوضاع الطاقة المنخفضة للإيقاف/الاستعداد.
دعم العتاد واللوحات¶
STM32H7 — أعمال تأسيسية (CMSIS / HAL / محمّل الإقلاع)؛ لوحة OpenMV H7 غير قابلة للاستخدام بعد في هذا الإصدار.
WINC1500 — تحديث البرنامج الثابت المرفق.
تغييرات كاسرة في الواجهة البرمجية¶
تغييرات كاسرة مرئية للمستخدم في الواجهة البرمجية بين v2.6.0 وv2.7.0. النطاق: وحدات Python بلغة C في modules/ ومكتبات Python في scripts/libraries/.
كل تغيير موسوم بمدى تأثيره:
رئيسي — يؤثّر في معظم البرامج النصية التي استخدمت الميزة؛ ستحتاج إلى نقل الشيفرة.
ثانوي — واجهة برمجية ضيقة؛ يؤثّر فقط في البرامج النصية التي استخدمتها.
سلوكي — الواجهة نفسها لكن النتائج مختلفة؛ أعد فحص البرامج النصية المضبوطة.
التغييرات مجمّعة حسب التأثير بهذا الترتيب. إذا كنت ترغب فقط في نقل شيفرتك، فانتقل إلى قائمة التحقق للترحيل في النهاية. يرتبط كل تجزئة لإيداع (hash) بفرقه على GitHub.
إعادة هيكلة sensor.set_auto_gain() لتستخدم الديسيبل (رئيسي)¶
لم تعد sensor.set_auto_gain() تقبل المعامل الصحيح value= ولم تعد تُرجع True / False. استخدم sensor.set_auto_gain(False, gain_db=...) (قيمة ديسيبل من نوع float)، واقرأها مرة أخرى عبر الدالة الجديدة sensor.get_gain_db()، ولفّ الاستدعاء بـ try / except لأن الفشل يثير الآن ValueError.
الإيداعات: b906c5f19
إعادة هيكلة sensor.set_auto_exposure() لتستخدم الميكروثانية (رئيسي)¶
لم تعد sensor.set_auto_exposure() تقبل المعامل الصحيح value= ولم تعد تُرجع True / False. استخدم sensor.set_auto_exposure(False, exposure_us=...)، واقرأها مرة أخرى عبر الدالة الجديدة sensor.get_exposure_us()، وعالِج ValueError المُثار عند الفشل.
الإيداعات: 7be0a7a18
إعادة هيكلة find_displacement() / أحجام إطارات FFT (رئيسي)¶
أُعيدت هيكلة ارتباط الطور. تُرجع image.find_displacement() الآن كائن إزاحة (مع x_translation() / y_translation() — وكانتا سابقاً x_offset / y_offset — إضافة إلى rotation() / scale() ومعاملي logpolar / fix_rotation_scale الجديدين)؛ وأُزيل كائن الدوران-التحجيم المنفصل وأُضيفت find_rotscale(). وأُعيدت تسمية ثوابت حجم إطار FFT أو أُزيلت: أُزيل sensor.B40x30 كلياً، وأُعيدت تسمية sensor.B64x32 / B64x64 إلى الأحرف الكبيرة sensor.B64X32 / B64X64 (مع B128X64 / B128X128 الجديدين).
إعادة هيكلة sensor.set_auto_whitebal() لتستخدم الديسيبل (ثانوي)¶
استبدلت sensor.set_auto_whitebal() معاملها الصحيح value=[r, g, b] بـ rgb_gain_db=[r, g, b] (ديسيبل من نوع float) وتُرجع الآن None (مثيرةً ValueError عند الفشل) بدلاً من True / False. استخدم الدالة الجديدة sensor.get_rgb_gain_db() لقراءة الكسوب مرة أخرى.
الإيداعات: 30ecbdc4f
تُرجع set_hmirror() / set_vflip() القيمة None (ثانوي)¶
تُرجع sensor.set_hmirror() وsensor.set_vflip() الآن None وتثيران ValueError عند الفشل بدلاً من إرجاع حالة True / False. أزل أي شيفرة تتفرّع بناءً على قيمتيهما المُرجَعتين.
الإيداعات: aeb023804
أدوات برنامج WINC الثابت تتطلب مسار ملف (ثانوي)¶
تغيّرت أدوات برنامج network.WINC الثابت: تأخذ wlan.fw_dump() / wlan.fw_update() الآن معامل مسار ملف برنامج ثابت إلزامياً، ويُفتح WINC في وضع برمجة (network.WINC(mode=...)). حدّث الاستدعاءات بلا معامل لتمرير مسار (مثل wlan.fw_update("/winc_19_5_2.bin")).
الإيداعات: fcc3b0b9c
تتطلب image.find_number() منطقة اهتمام بحجم 28x28 (سلوكي)¶
تتطلب image.find_number() (LeNet) الآن منطقة اهتمام بحجم 28x28 بالضبط تقع داخل الصورة وتثير خطأً خلاف ذلك (بدلاً من العمل على منطقة اهتمام عشوائية/تغطي الصورة كاملة). مرّر roi=(x, y, 28, 28) بشكل صريح.
الإيداعات: 4d09a13f3
انقلاب إشارة z_rotation() لـ AprilTag (سلوكي)¶
تستخدم z_rotation() لـ AprilTag (والدالة ذات الصلة rotation()) الآن اصطلاح إحداثيات أيمن، لذا فإن الزاوية المُرجَعة سالبة مقارنةً بالإصدارات السابقة. يجب على البرامج النصية التي تعتمد على الإشارة القديمة عكس القيمة أو تعديل حساباتها للزاوية.
الإيداعات: 7673aaf74
قائمة التحقق للترحيل¶
للحصول على نقل نظيف إلى v2.7.0، العمل المعتاد هو:
انقل
set_auto_gain()إلىgain_db=+get_gain_db()وعالِجValueError(إعادة هيكلة الكسب التلقائي).انقل
set_auto_exposure()إلىexposure_us=+get_exposure_us()(إعادة هيكلة التعريض التلقائي).حدّث
find_displacement()إلى كائن الإزاحة وأعد تسمية ثوابت حجم إطار FFT (إعادة هيكلة find_displacement).انقل
set_auto_whitebal()إلىrgb_gain_db=+get_rgb_gain_db()(إعادة هيكلة موازنة البياض) وتوقّف عن فحص قيمة إرجاعset_hmirror()/set_vflip()(تغيير الانعكاس/القلب).مرّر مسار برنامج ثابت إلى أدوات WINC
fw_*(تغيير أدوات WINC).مرّر
roiبحجم 28x28 إلىfind_number()(تغيير find_number) واضبط حسابات زاوية AprilTag للإشارة المنقلبة لـz_rotation()(تغيير z_rotation).
تعمل جميع البرامج النصية الأخرى دون تغيير.