v4.5.3

يُعدّ الإصدار v4.5.3 إصدارًا كبيرًا: التركيز التلقائي في OV5640، ورسم خطوط بحواف ناعمة، ومُفكّك ترميز JPEG عتادي مُدمج في الفرع الرئيسي، ومكاسب كبيرة في قدرات i.MX RT (RT1060)، ومجموعة واسعة من إصلاحات الكاميرا و ISP. أُزيلت عدة دوال صور نادرة الاستخدام وتغيّرت بعض واجهات برمجة التطبيقات الخاصة بـ ISP/العرض — اطّلع على التغييرات الكاسرة أدناه.

أبرز النقاط

  • التركيز التلقائي في OV5640 — مُفعَّل على OpenMV 4 / 4 Plus / RT1060 (sensor.ioctl(sensor.IOCTL_TRIGGER_AUTO_FOCUS))، مع مثال.

  • رسم draw_line() بحواف ناعمة ومُفكّك ترميز JPEG عتادي مُدمج في الفرع الرئيسي لـ STM32 (إلغاء ضغط JPEG أسرع).

  • OpenMV RT1060 اكتسب ulab، وعمليات ISP، و set_framerate() / set_frame_callback()، ومخزن إطارات أكبر بكثير، وبرنامج تشغيل CAN.

  • تغيير كاسر: أُزيلت Image.div() / cartoon() / mul() وتغيّرت بعض واجهات برمجة التطبيقات الخاصة بـ ISP/العرض — راجع التغييرات الكاسرة.

ميزات جديدة

  • التركيز التلقائي في OV5640 — البرنامج الثابت للتركيز التلقائي مُفعَّل على OPENMV4 و OPENMV4P و OPENMV RT1060؛ شغِّله عبر sensor.ioctl(sensor.IOCTL_TRIGGER_AUTO_FOCUS). أُضيف مثال جديد 07-Sensor-Control/autofocus.py.

  • رسم خطوط بحواف ناعمة — اكتسبت draw_line() خاصية تنعيم الحواف.

  • وحدات تحكم عرض SPI مخصّصة — تقبل SPIDisplay الآن الكلمة المفتاحية controller= وتوفّر خطّاف bus_write لتسلسلات التهيئة/الأوامر المخصّصة.

  • ترقية Image.ccm() — تقبل الآن مصفوفات متداخلة 3x3 / 4x3 / 3x4 / 4x4 ومصفوفات ulab (مع صفّ إزاحة اختياري لكل قناة)؛ أُضيف مثال لتصحيح الألوان.

  • التقاط JPEG على i.MX RT — التقاط sensor.JPEG على Arduino Portenta/Nicla Vision/Giga، بالإضافة إلى set_framerate() و set_frame_callback() على منفذ mimxrt.

  • التحقق من نماذج TFLite — تحمل النماذج الآن بصمة ترتيب المُشغّلات وحجم مجموعة المُشغّلات.

  • WiFi — أُضيفت ثوابت أوضاع أمان CYW43؛ برامج نصية جديدة للتحكم في لوحة i.MX RT (Pin/ADC/CAN/I2C/PWM/SPI/UART/...).

تغييرات وتحسينات أخرى

  • تحديث MicroPython إلى 1.22؛ تحديث CMSIS إلى 5.9.0.

  • مُفكّك ترميز JPEG عتادي لـ STM32 مُدمج في الفرع الرئيسي — إلغاء ضغط JPEG أسرع على المُرمِّز الموجود على الشريحة.

  • تحسين Image.invert() / negate() وعمليات الصور الثنائية/الرياضية (تعليمات CMSIS الجوهرية).

  • جُعلت مكتبتا rpc و vl53l1x قابلتين للنقل (تستخدمان machine / time بدلاً من pyb)، بحيث تعملان على المنافذ غير STM32.

  • نسخ مخزن الإطارات بتسريع DMA على OpenMV H7 / H7 Plus / Pro / Pure Thermal و Arduino Giga / Nicla Vision / Portenta H7؛ يفحص STM32 الآن أجهزة I2C مرة واحدة لكل عملية فحص لتسريع الإقلاع.

إصلاحات الأخطاء

الكاميرا والمستشعرات:

  • تم تثبيت XCLK كاميرا STM32 على دورة عمل حقيقية بنسبة 50% وإصلاح خطأ عند ضبط تردد ساعة الكاميرا على صفر؛ وإصلاح اقتصاص+تبديل Bayer، وانزياح لون YUV422، و set_windowing() على منفذ mimxrt.

  • تم إصلاح فحص معرّف شريحة GC2145 و hmirror/vflip على التركيبات المُدوّرة؛ وإصلاح PAJ6100 على RT1062 وتجاوز سعة مخزن SPI لـ PixArt PAJ7620/PAW3902.

معالجة الصور:

  • تم إصلاح اقتصاص roi في find_rects()، واقتطاع الإزاحة الكسرية في morph()، والقيم الافتراضية للتباين/السطوع في image.gamma()، وإزاحات A/B في get_threshold() على RGB565، وفك ترميز JPEG للأبعاد التي ليست من مضاعفات 8.

النظام والمكتبات:

  • machine.LED.value() بدون وسيطة تُرجع الآن حالة LED بدلاً من مسحها؛ وإصلاح إلغاء تهيئة SPI SSEL على ناقل مشترك، و machine.deepsleep() على RT1062، وتعطّل TF عند فقدان المُشغّلات، والتفعيل التلقائي لبطاقة الشبكة WINC1500/ninaw10 عند connect().

العتاد ودعم اللوحات

  • OpenMV RT1060 — تفعيل ulab وعمليات ISP، ومخزن إطارات أكبر (10M←20M) / fb_alloc (2M←11M)، واستعادة برنامج تشغيل CAN، وذاكرة كومة أكبر.

  • Arduino GIGA — دعم كاميرا GC2145، مع الكشف التلقائي لـ GC2145/OV5640 (يتشاركان عنوان I2C).

  • i.MX RT — دعم التقاط sensor.JPEG.

تغييرات كاسرة في واجهة برمجة التطبيقات

تغييرات كاسرة في واجهة برمجة التطبيقات المرئية للمستخدم بين v4.5.2 و v4.5.3. النطاق: وحدات Python C في modules/ ومكتبات Python في scripts/libraries/.

كل تغيير موسوم بمدى تأثيره:

  • طفيف — واجهة برمجة تطبيقات ضيقة؛ يؤثر فقط على البرامج النصية التي استخدمتها.

  • سلوكي — نفس الواجهة، نتائج مختلفة؛ أعد فحص البرامج النصية المضبوطة.

التغييرات مُجمَّعة حسب التأثير بهذا الترتيب. إن كنت تريد نقل شيفرتك فحسب، انتقل إلى قائمة التحقق للترحيل في النهاية. كل بصمة إيداع ترتبط بفروقاتها على GitHub.

دوال صور مُزالة (طفيف)

أُزيلت Image.div() و Image.cartoon() (ومثالها) و Image.mul().

الإيداعات: 7c932602e، 055a468b8، 4fe7fb63b

واجهة برمجة التطبيقات لوحدة العرض (طفيف)

أُزيل التراجع القديم إلى اسم الوحدة udisplay — تُسجَّل الوحدة الآن باسم display فقط. استُبدلت دالتا dsi_write() / dsi_read() الخاصتان بـ DSI فقط بـ bus_write() / bus_read()، المتوفرتين الآن على جميع وحدات تحكم العرض.

الإيداعات: 7df6694c3، 7d1f378a0

تغييرات واجهة برمجة التطبيقات لـ MQTT و tf.regression (طفيف)

أُعيد تصميم MQTTClient في مكتبة mqtt: أصبح port مطلوبًا الآن، وأُضيفت الكلمتان المفتاحيتان ssl_params / callback في المُنشئ ووسيطة timeout على connect()، وأُزيلت القيم الافتراضية القديمة ssl= / port=0، وأصبحت check_msg() غير حاجبة الآن. أُعيدت كتابة tf.regression() — توقيعها الآن regression(model, array) وتتعامل مع النماذج أحادية/ثنائية/ثلاثية الأبعاد والمُكمَّمة (int8).

الإيداعات: d12874c63، c5ec576c1

تغييرات سلوك ISP / المستشعر (سلوكي)

أُعيد تصميم Image.awb() — أصبح التمييز بين العالم الرمادي (الافتراضي) ورقعة الأبيض (max=True) صريحًا الآن، وأصبحت وسيطة max بالإضافة إلى وسائط gamma / contrast / brightness في Image.gamma() كلمات مفتاحية فقط الآن (يجب تحديث الاستدعاءات الموضعية). عُطِّل تبديل الصورة الآن لـ YUV422 (كان سابقًا يُنتج مخرجات خاطئة) وصُحِّح انزياح لون YUV422 ليطابق Bayer. يثير الآن مسار JPEG في STM32 خطأً عند عدم تطابق هندسة JPEG بدلاً من إنتاج صورة تالفة، ويطبّق الآن وضع نقطة الوصول WiFi وضع أمان افتراضيًا على منفذي STM32 و i.MX RT.

الإيداعات: 36d5cecbd، 00500ccde، c1eeaefd6، 333fb2b5f، 55cab8733، c7d40f6af

قائمة التحقق للترحيل

للنقل النظيف إلى v4.5.3، العمل المعتاد هو:

  1. توقّف عن استخدام Image.div() / cartoon() / mul() (الدوال المُزالة).

  2. استورد وحدة العرض باسم display وبدِّل dsi_write/ dsi_read إلى bus_write/bus_read (تغيير واجهة برمجة تطبيقات العرض).

  3. حدّث بناء MQTTClient (port مطلوب؛ ssl_params/callback) وأي استدعاءات لـ tf.regression() (تغييرات واجهة برمجة تطبيقات المكتبات).

  4. مرّر max في awb() و gamma/contrast/ brightness في gamma() كوسائط مفتاحية، وأعد فحص افتراضات YUV422/التبديل وأمان وضع نقطة الوصول (تغييرات ISP/المستشعر).