v4.5.1

يضيف الإصدار v4.5.1 تلميحات رسم لاتجاه الصورة ونسبة أبعادها، وتحميل الصور مباشرة من مسار ملف، و ioctl لمجال رؤية واسع في GC2145، وواجهة API جديدة للتحكم في الإضاءة الخلفية. كما يعيد صياغة منشئ Image()، وواجهات display، وتحليل وسائط الوحدات — اقرأ التغييرات المعطّلة للتوافق أدناه.

أبرز النقاط

  • تلميحات الرسم — اكتسبت draw_image() تلميحات اتجاه (HMIRROR/VFLIP/TRANSPOSE، ROTATE_90/180/270) وتلميحات تحجيم بنسبة الأبعاد (SCALE_ASPECT_KEEP/EXPAND/IGNORE).

  • تحميل الصور من القرص — تقبل draw_image() / display.write() سلسلة مسار ملف.

  • التحكم في الإضاءة الخلفية — أصناف جديدة DACBacklight / PWMBacklight ووسيط backlight= للعرض.

  • تغيير معطّل للتوافق: تغيّر منشئ Image()، وواجهات display، وتحليل وسائط الوحدات — راجع التغييرات المعطّلة للتوافق.

ميزات جديدة

  • تلميحات اتجاه draw_image()image.HMIRROR، وimage.VFLIP، وimage.TRANSPOSE، إضافة إلى image.ROTATE_90 / ROTATE_180 / ROTATE_270 للتسهيل.

  • تلميحات نسبة أبعاد draw_image()image.SCALE_ASPECT_KEEP / SCALE_ASPECT_EXPAND / SCALE_ASPECT_IGNORE للملاءمة / التوسيع / التمديد.

  • ثوابت اللوحة اللونيةimage.PALETTE_RAINBOW وimage.PALETTE_IRONBOW (نُقلت إلى وحدة image).

  • مجال رؤية واسع — ioctls جديدة sensor.IOCTL_SET_FOV_WIDE / IOCTL_GET_FOV_WIDE (على GC2145، حتى تحجيم 5x للمستشعر).

  • التحميل من القرص — تقبل draw_image() وdisplay.write() سلسلة مسار ملف لصورة المصدر، فتحمّلها من التخزين مباشرة.

  • متحكمات الإضاءة الخلفية — أصناف جديدة DACBacklight وPWMBacklight (قابلة للاستيراد من display)، ووسيط backlight= بكلمة مفتاحية فقط على منشئي العرض SPI/المتوازي.

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

  • نُقل مشغّل شاشة ST7701 DSI إلى وحدته الخاصة st7701.py (ولا يزال قابلاً للاستيراد عبر from display import *) وهو مجمّد على Arduino Giga؛ كما جُمّد مشغّل IMU lsm9ds1 على Arduino Nano 33 BLE Sense.

  • أصبحت كاميرات MT9V022 / MT9V034 (المغلاق العام) الآن تطبّق تصحيح ضوضاء الصفوف لتحسين جودة الصورة.

  • أصبح وحدة تخزين USB كبيرة السعة على i.MX RT الآن موسومة كقرص OpenMV.

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

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

  • تم إصلاح كشف الزوايا (find_keypoints() FAST/AGAST) على الصور التي يزيد ارتفاعها عن 480 صفاً — أصبح حجم المخزن المؤقت لكل صف الآن محدّداً وفق ارتفاع الصورة.

  • أُضيف دعم دبوس FSYNC لـ snapshot() المتزامن مع الإطار على i.MX RT (OpenMV RT1060)، وأُصلح تبادل دبابيس SPI4 MOSI/MISO على RT1060.

العرض والفيديو:

  • صُحّح ترتيب وسائط منشئ SPIDisplay (كانت bgr وbyte_swap وtriple_buffer تُطبّق على المعاملات الخاطئة).

  • تم إصلاح فساد صورة درع TV عند رسم صورة بمستطيل محدّد، وحدود إطار MJPEG غير الصحيحة عند تسجيل إطارات محجّمة.

الشبكات:

  • لم يعد وضع نقطة الوصول WINC WiFi يفرض قيد WEP فقط المتقادم — أصبح وضعا نقطة الوصول المفتوح و WPA يعملان مع معالجة PSK سليمة.

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

  • OpenMV RT1060 — دبوس FSYNC ودبابيس SPI4 المصحّحة.

  • Arduino GIGA — حل بديل لموثوقية QSPI؛ تجميد شاشة ST7701.

  • Arduino Nano 33 BLE Sense — تجميد مشغّل IMU lsm9ds1.

تغييرات معطّلة للتوافق في الـ API

تعطّلات API المرئية للمستخدم بين v4.5.0 و v4.5.1. النطاق: وحدات Python بلغة C في modules/ ومكتبات Python في scripts/libraries/.

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

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

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

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

منشئ Image() وواجهات display (ثانوي)

أُعيدت صياغة منشئ image.Image ليستخدم وسائط بكلمات مفتاحية (height، pixformat، buffer=، copy_to_fb=)؛ وأصبح بإمكانه الآن بناء صورة من bytearray/مخزن مؤقت موجود، ويُشترط مخزن مؤقت للتنسيقات المضغوطة. وأُعيدت صياغة display.write(): أصبحت x_scale/y_scale الآن تأخذ قيمة عشرية (نسبة تحجيم) أو عدداً صحيحاً (الحجم المستهدف بالبكسل) وأُزيلت الكلمتان المفتاحيتان المنفصلتان x_size/y_size. وأُعيدت تسمية الوسيط الموضعي الأول لـ WINC.connect() من essidssid، وتغيّرت نتائج مسح WINC WiFi إلى (ssid_bytes, bssid_bytes, channel, rssi, security, N) (أصبح SSID/BSSID الآن بايتات؛ ولم يعد BSSID سلسلة MAC منسّقة).

الإيداعات: 6752c95ac، 161737092، 8178c237c، b6cdf8de1

نطاق الإضاءة الخلفية والتحجيم والوسائط بكلمات مفتاحية فقط (سلوكي)

أصبحت Display.backlight() الآن تأخذ شدة من 0 إلى 100 (0 = إيقاف، 100 = كامل) بدلاً من 0 إلى 255، وتثير ValueError خارج النطاق. وأصبحت قيم x_scale/y_scale الصحيحة الآن تُعامَل كعامل تحجيم ضربي (تماماً مثل القيم العشرية) بدلاً من بُعد بكسل مستهدف — يؤثر هذا على fir.snapshot()/draw_ir()، وtof.snapshot()/ draw_depth()، وdisplay، وتحجيم tv. وتم توحيد تحليل الوسائط عبر وحدات sensor، وfir، وtof، وtv، وmjpeg، وgif، وimageio، وtf، وaudio، مما جعل عدة خيارات كانت موضعية في السابق بكلمات مفتاحية فقط (الأسماء والقيم الافتراضية والسلوك لم تتغيّر بخلاف ذلك).

الإيداعات: 391ec443f، 8bd25d6cd، 477312656، 08bf62a32، a4c0f20bf، 9b411a66d، 3d679f5a6، d15fc6b8d، 555e67ecd

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

من أجل نقل نظيف إلى v4.5.1، العمل النموذجي هو:

  1. حدّث إنشاء Image() إلى الصيغة الجديدة بالكلمات المفتاحية، وانقل display.write() بعيداً عن x_size/y_size، وأعد تسمية essidssid في WINC.connect() (وعالج صفوف المسح الجديدة المبنية على البايتات) (تغييرات المنشئ/العرض/WINC).

  2. أعد تحجيم استدعاءات Display.backlight() إلى النطاق 0 إلى 100، وأعد فحص أي استخدام لقيم x_scale/y_scale الصحيحة، ومرّر خيارات الوحدة التي كانت موضعية سابقاً ككلمات مفتاحية (التغييرات السلوكية).