v1.4.0

v1.4.0 هو إعادة تنظيم تأسيسية لـ imlib. أُعيدت كتابة find_blobs() / find_markers() للتتبّع المباشر بعتبة اللون، ودُمجت العديد من طرق الصور المستقلة في صفوف (tuples) الكتل، وأُعيدت تسمية عدة طرق للصور (subimgcopy وblitreplace وfind_eyesfind_eye وcompresscompressed). كما يضيف sensor.get_fb() ومفاتيح تبديل AGC / AEC و~60 برنامجاً نصياً كأمثلة. هذا إصدار كاسر بشدّة — اقرأ التغييرات الكاسرة أدناه.

أبرز النقاط

  • تتبّع الكتل المعتمد على اللون — تأخذ find_blobs() عتبات اللون مباشرةً وتُرجع قائمة مسطّحة من صفوف الكتل.

  • تنظيف Imlibsubimg()copy() وblit()replace() وfind_eyes()find_eye() وcompress()compressed().

  • المستشعر — أُضيفت sensor.get_fb() ومفاتيح تمكين AGC/AEC.

  • أُضيف/وُسّع ~60 برنامجاً نصياً كأمثلة.

  • كاسر: واجهة برمجة الكتل، وطرق الصور المحذوفة، وعدة إعادات تسمية — راجع التغييرات الكاسرة.

ميزات جديدة

  • المستشعر — أُضيفت sensor.get_fb() (لاسترجاع مخزن إطارات آخر لقطة)، وsensor.set_gain_ctrl(enable) (لتبديل AGC)، وsensor.set_exposure_ctrl(enable) (لتبديل AEC).

  • الصورة — أصبح فهرس الصورة (img[i]) يدعم الآن قراءة البكسلات وكتابتها معاً (grayscale / RGB565 / JPEG)؛ وأُضيفت image.compress() التي تعمل في مكانها ووسيط مفتاحي quality= في دوال JPEG؛ وأصبحت find_blobs() / find_markers() / find_features() تُرجع قائمة فارغة (قابلة للتكرار) بدلاً من قيمة غير قائمة عند عدم العثور على شيء.

  • أُضيف ~60 برنامجاً نصياً كأمثلة (التحكم باللوحة، ومرشحات الصور، وتتبّع اللون، وكشف الوجه / العين / الميزات، ودرع WiFi) ومثال ثانٍ لكشف القزحية.

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

  • أصبحت image.histeq() تعمل الآن على صور RGB565، لا على تدرج الرمادي فقط.

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

  • تمت تهيئة pyb.DAC عند الإقلاع لكي يعمل DAC (#121)، وأُصلحت image.dilate() المعطّلة، وتلف الصفر بايت في client.send() لـ WINC، وإعادة تكرار دمج الكتل، وخطأ إعادة تهيئة مخزن الملفات الذي كان يُعطّل نظام الملفات بعد أول استخدام، وحساب To_min / To_max للمزدوجة الحرارية (#113)، وطُبّقت رقعة I2C/DMA من طبقة HAL في MicroPython الأصلية.

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

  • درع WiFi — حُدّث WINC1500 إلى ملفات لوحة Rev-B.

  • pyb.DAC — تم تمكين طرفية DAC.

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

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

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

  • رئيسي — يؤثّر في معظم البرامج النصية التي استخدمت الميزة؛ ستحتاج إلى نقل الشفرة.

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

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

أُعيدت كتابة find_blobs() / find_markers() (رئيسي)

أُعيدت كتابة image.find_blobs() / find_markers() للتتبّع المعتمد على اللون: أصبحت الآن تمرّر عتبات اللون (ودالة مرشّح اختيارية) مباشرةً بدلاً من العمل على صورة مجزّأة مسبقاً، والنتيجة قائمة مسطّحة واحدة من صفوف كتل من 10 عناصر (مع حقل لرمز اللون) بدلاً من شجرة متداخلة لكل لون. أعد صياغة برامج تتبّع اللون النصية لتمرّر عتبات اللون وتتكرر عبر القائمة المسطّحة.

الالتزامات: d1ff36602, 16daeb83a

حُذفت طرق الصور المستقلة (رئيسي)

حُذفت image.threshold وimage.centroid() وimage.orientation_radians() وimage.orientation_degrees() وimage.pixels(). أصبحت بيانات المركز / الاتجاه / عدد البكسلات متاحة الآن كحقول في صفوف الكتل التي تُرجعها find_blobs().

الالتزامات: 9e5d379c1

إعادات تسمية طرق Imlib (رئيسي)

أُعيدت تسمية/صياغة عدة طرق للصور: image.subimg()image.copy() وimage.blit()image.replace()، وغُيّرت image.blend() لتطابق عمليتي الصورتين الأخريين. حُذفت طرق image.scale() / scaled() / rainbow() (نُقلت rainbow إلى وحدة FIR). حدّث الاستدعاءات إلى الأسماء الجديدة.

الالتزامات: b534dc6ff

أُعيدت تسمية find_eyes() إلى find_eye() (ثانوي)

أُعيدت تسمية image.find_eyes() إلى image.find_eye() وأصبحت الآن تُرجع صفّاً ثنائياً للقزحية (x, y) بدلاً من صفّ العيون السابق. أعد تسمية الاستدعاء وحدّث معالجة القيمة المُرجَعة.

الالتزامات: 7a01a9bed

أُعيدت تسمية image.compress() إلى compressed() (ثانوي)

أُعيدت تسمية image.compress() (التي كانت تُرجع صورة JPEG جديدة) إلى image.compressed()؛ وأصبحت image.compress() الجديدة بدلاً من ذلك تضغط الصورة في مكانها وتُرجع None. كما اكتسبت image.save() وسيطاً مفتاحياً quality= وأصبحت تُرجع None بدلاً من True. رحّل img.compress(q) (التي تتوقّع صورة مُرجَعة) إلى img.compressed(quality=q).

الالتزامات: 367e5fdd3

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

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

  1. أعد صياغة شفرة تتبّع اللون لتمرّر عتبات اللون إلى find_blobs() / find_markers() وتتكرر عبر قائمة صفوف الكتل المسطّحة (إعادة كتابة find_blobs).

  2. اقرأ بيانات المركز / الاتجاه / البكسلات من صفوف الكتل بدلاً من الطرق المستقلة المحذوفة (طرق الصور المحذوفة).

  3. أعد تسمية subimgcopy وblitreplace، وأصلح استدعاءات blend()، واستبدل scale / scaled / rainbow (إعادات تسمية imlib).

  4. أعد تسمية find_eyes()find_eye() (إعادة تسمية find_eye) وcompress()compressed() (إعادة تسمية compress).

تعمل جميع البرامج النصية الأخرى دون تغيير.