v3.6.1¶
إصدار v3.6.1 إصدار كبير. فهو يقدّم وحدة imu (LSM6DS3)، ومجموعة من واجهات getter الجديدة في sensor مع دوران تلقائي مدفوع بوحدة IMU، وتصحيح المنظور رباعي النقاط rotation_corr()، ويوفّر الدعم لـ Arduino Portenta H7 مع كاميرات HIMAX HM01B0 و OV7690. تغيّرت عدة واجهات في sensor / image وأُسقط دعم TensorFlow على M7 — اقرأ التغييرات الكاسرة أدناه.
أبرز النقاط¶
وحدة
imu— قياس التسارع / الجيروسكوب / درجة الحرارة / الدوران (roll) / الميل (pitch) على LSM6DS3 (OpenMV 4 / Portenta).واجهات getter للمستشعر + الدوران التلقائي —
get_pixformat()/get_framesize()/get_hmirror()/get_vflip()/get_windowing()وset_transpose()/set_auto_rotation()ودوران اللقطة المدفوع بوحدة IMU.تصحيح المنظور — اكتسبت
rotation_corr()كلمتي المفتاحfovوcorners(رباعية النقاط).عتاد جديد — Arduino Portenta H7 و HIMAX HM01B0 وكاميرا OV7690.
كاسر: أصبحت
set_pixformat()/set_framesize()تعيدNone، وأُزيلتsensor.set_framerate()، وأُسقط دعم TensorFlow على M7، وأصبحتlens_corr()/linpolar()تتطلبان أبعادًا زوجية — انظر التغييرات الكاسرة.
ميزات جديدة¶
imu— وحدة IMU جديدة:imu.acceleration_mg()وimu.angular_rate_mdps()وimu.temperature_c()وimu.roll()وimu.pitch()وimu.sleep()(LSM6DS3 على OpenMV 4 / Portenta).واجهات getter للمستشعر — أُضيفت
sensor.get_pixformat()وget_framesize()وget_hmirror()وget_vflip()وget_windowing()وset_transpose()/get_transpose()وset_auto_rotation()/get_auto_rotation().الدوران التلقائي — تستخدم
sensor.snapshot()وحدة IMU لقلب الإطارات أو عكسها أو تبديلها (transpose) عند تمكين الدوران التلقائي.rotation_corr()— أُضيفت كلمتا المفتاحfovوcorners(منظور رباعي النقاط)، مع أمثلة على تصحيح المنظور.lcd.init()— أُضيفت وسيطة الكلمة المفتاحيةbgr.collections.deque— مُكّنت في بناء MicroPython.أُضيفت ثابتتا المعرّف
sensor.OV7690وsensor.HM01B0ومثال مُرشّح صور شبيه بـ numpy باستخدامulab.
تغييرات وتحسينات أخرى¶
تحسين كبير في مرشّحات الصور (الوسيط / المنوال / المتوسط / …) و
find_circles()وتصحيح العدسة؛ وأصبحتalloc_extra_fbقادرة على تخصيص أي عدد من البايتات؛ وأُعيد بناء نموذج كشف الأشخاص بعملية average-pool جديدة.
إصلاحات الأخطاء¶
الكاميرا والمستشعرات:
إصلاح
sleep()في OV2640 (تستخدم الآن سجل الاستعداد COM2 بدلًا من دبوس الإطفاء)، وتهيئة دبوس FSYNC، وقطبيتي HSYNC/VSYNC في HM01B0 وعنوان/مسح I2C، ودبوس GPIO لإطفاء مستشعر Portenta ودبوس إعادة ضبط الكاميرا، وتعطيل الدوران التلقائي عندما يقترب ميل IMU من 90°/270°.
التصوير والنظام:
إصلاح خطأ في فحص الحدود في مرشّح الصور، وعطل قاسٍ (hardfault) عند تعطيل ذاكرة D-cache، والإقلاع على اللوحات بدون بطاقة SD، وخطأ
load_to_fbفيtf.load()، وتجاوز المكدّس في كشف الأشخاص (رُفِع مكدّس H7 إلى ≥12 KB)، وإزاحات واصف USB لوضع السرعة العالية على OpenMV 4 Plus.
دعم العتاد واللوحات¶
Arduino Portenta H7 — إعداد أولي للوحة (تهيئة الساعة/OSC/HSE في STM32H747، ورؤوس CMSIS، و ADC، و SDRAM، ومعرّف USB PID الخاص بـ Arduino).
HIMAX HM01B0 — مُشغّل كاميرا أحادية اللون جديد (Bayer، ساعة مُذبذب خارجي).
OV7690 — مُشغّل كاميرا جديد.
LSM6DS3 IMU — OpenMV 4 / Portenta.
تغييرات واجهة برمجة التطبيقات الكاسرة¶
كسور في واجهة برمجة التطبيقات مرئية للمستخدم بين v3.6.0 و v3.6.1. النطاق: وحدات C الخاصة بـ Python في modules/ ومكتبات Python في scripts/libraries/.
كل تغيير موسوم بتأثيره:
طفيف — واجهة ضيقة؛ تؤثر فقط على البرامج النصية التي استخدمتها.
سلوكي — واجهة نفسها بنتائج مختلفة؛ أعد فحص البرامج النصية المضبوطة.
التغييرات مُجمّعة حسب التأثير بهذا الترتيب. إن أردت فقط نقل شيفرتك، انتقل إلى قائمة الترحيل في النهاية. كل تجزئة commit ترتبط بالفرق (diff) الخاص بها على GitHub.
أُزيلت sensor.set_framerate() (طفيف)¶
أُزيل الكعب البرمجي (stub) عديم الأثر sensor.set_framerate()؛ واستدعاؤه الآن يطلق AttributeError. أزل الاستدعاء وتحكّم في توقيت الإطارات عبر framesize/exposure بدلًا منه. (أُعيد تقديم set_framerate() عاملة في v4.0.2.)
Commits: 705e98f91
أُسقط دعم TensorFlow على OpenMV Cam M7 (طفيف)¶
عُطّل TensorFlow (وحدة tf) على OpenMV Cam M7 / OpenMV 3 (لم يعد يتسع). يفشل import tf على M7 — استخدم كاميرا من فئة H7 لـ TensorFlow. (أُعيد تمكين tf على F7 في v3.6.3.)
Commits: 2ae875077
أصبحت set_pixformat() / set_framesize() تعيد None (سلوكي)¶
أصبحت sensor.set_pixformat() و sensor.set_framesize() الآن تعيدان None بدلًا من True، وتنسيق البكسل غير المدعوم يطلق الآن ValueError بدلًا من تأكيد (assertion). الشيفرة التي كانت تفحص القيمة المعادة (مثل if sensor.set_pixformat(...):) يجب أن تتوقف عن ذلك، والشيفرة التي كانت تلتقط AssertionError للتنسيقات غير المدعومة يجب أن تلتقط ValueError.
Commits: f314ac4e7
تتطلب lens_corr() / linpolar() / logpolar() أبعادًا زوجية (سلوكي)¶
أصبحت image.lens_corr() و image.linpolar() / image.logpolar() تتطلب الآن عرضًا وارتفاعًا زوجيين للصورة وتطلق خطأً عند الأبعاد الفردية. اقتص الصورة أو غيّر حجمها إلى أبعاد زوجية قبل استدعاء هذه الطرق.
قائمة الترحيل¶
للنقل النظيف إلى v3.6.1، العمل المعتاد هو:
أزل استدعاءات
sensor.set_framerate()(إزالة set_framerate).انقل أحمال عمل TensorFlow بعيدًا عن OpenMV Cam M7 (تغيير TensorFlow على M7).
توقف عن الاعتماد على القيمة المعادة من
set_pixformat()/set_framesize()والتقطValueErrorلتنسيقات البكسل غير المدعومة (تغيير القيمة المعادة).تأكد من أن أبعاد الصورة زوجية قبل
lens_corr()/linpolar()/logpolar()(متطلب الأبعاد الزوجية).
تعمل جميع البرامج النصية الأخرى دون تغيير.