class Image -- كائن الصورة

Image هو نوع البيانات المركزي في وحدة image -- وهو مخزن بكسلات في الذاكرة تعمل عليه كل روتينات الرسم وكل المرشحات وكل التحويلات الهندسية وكل روتينات استخراج الميزات. كل إطار يخرج من csi.CSI.snapshot() هو Image؛ وكذلك كل إطار يُحمَّل من القرص، أو يُفكّ ترميزه من JPEG أو PNG، أو يُخصَّص من ndarray بأسلوب numpy، أو يُنشأ كلوحة رسم فارغة.

تُوصَف Image بثلاثة أرقام -- width و height و pixformat -- بالإضافة إلى مخزن بكسلات متصل. يحدد تنسيق البكسل كلًّا من تخطيط الذاكرة والعمليات المتاحة:

  • BINARY (1 bpp) -- بت واحد لكل بكسل؛ يُستخدم في العمليات المورفولوجية ووضع العتبات.

  • GRAYSCALE (8 bpp) -- بايت واحد لكل بكسل؛ التنسيق المعياري لمعظم عمليات الرؤية الحاسوبية (AprilTag والحواف و ORB والتدفق البصري).

  • RGB565 (16 bpp) -- بايتان لكل بكسل (5R/6G/5B)؛ تنسيق اللون الافتراضي.

  • BAYER (8 bpp) -- بيانات فسيفساء Bayer الخام الواردة مباشرة من المستشعر. معظم طرق الرؤية الحاسوبية غير متاحة على صور Bayer؛ قم بإلغاء فسيفساء Bayer إلى GRAYSCALE / RGB565 أولًا.

  • YUV422 (16 bpp) -- لون بتنسيق عينات لونية مخفّضة 4:2:2، بايتان لكل بكسل. بعض الطرق فقط تعمل مباشرة على YUV422.

  • JPEG / PNG -- مخازن مضغوطة. تتطلب العمليات على مستوى البكسل استخدام to_grayscale() أو to_rgb565() أولًا.

من أين تأتي كائنات الصورة

هناك أربع طرق للحصول على Image:

  • من مخزن إطارات الكاميرا -- csi.CSI().snapshot() يعيد الإطار الملتقط التالي. الكائن المُعاد هو غلاف رقيق حول ذاكرة مخزن إطارات الكاميرا، لذا فإن أي عملية رسم / ترشيح عليه تغيّر ما يُرسَل إلى معاينة الـ IDE والشاشة.

  • من ملف -- مرّر سلسلة مسار إلى مُنشئ Image. تُفكَّك ترميزات BMP و PGM و PPM و JPEG و PNG مباشرة إلى RAM (أو إلى مخزن إطارات الكاميرا إذا كان copy_to_fb=True).

  • من ndarray -- مرّر مصفوفة float32 بشكل (h, w) أو (h, w, 3). تُقاس البكسلات من 0.0 -- 255.0 إلى GRAYSCALE أو RGB565 على التوالي.

  • فارغة -- مرّر (width, height, pixformat) لتخصيص سطح رسم مملوء بالأصفار. بالنسبة لتنسيقات البكسل المضغوطة (JPEG / PNG) يُطلب وسيط buffer= ويحمل تدفق البايتات المضغوط.

حلقة الالتقاط والمعالجة والعرض النموذجية

import csi
import image

sensor = csi.CSI()
sensor.reset()
sensor.pixformat(csi.RGB565)
sensor.framesize(csi.QVGA)

while True:
    img = sensor.snapshot()                    # capture
    for blob in img.find_blobs([(30, 100, 15, 127, 15, 127)]):  # process
        img.draw_rectangle(blob.rect)          # annotate
    # img is shown automatically in the IDE preview and on any
    # attached display.

الفهرسة والطول والتكرار والوصول الشبيه بالبايتات

  • الفهرسة -- img[i] يقرأ البكسل i (خطيًّا، بترتيب الصفوف أولًا). img[i] = value يكتبه. بكسلات Grayscale / Bayer أعداد صحيحة 8 بت، وبكسلات RGB565 / YUV422 أعداد صحيحة معبّأة 16 بت، والبكسلات الثنائية 0 / 1. بالنسبة لصور JPEG / PNG يكون فضاء الفهرسة هو تدفق البايتات المضغوط، وليس البكسلات.

  • الطول -- len(img) يعيد عدد البكسلات للتنسيقات غير المضغوطة أو عدد البايتات للتنسيقات المضغوطة.

  • التكرار -- for px in img: ... يمر عبر مصفوفة البكسلات بنفس ترتيب فهرسة [].

  • الشبيه بالبايتات -- تكشف Image عن بروتوكول مخزن القراءة، لذا يمكنك تمريرها مباشرة إلى أي شيء يقبل bytes / bytearray (مثل uart.write(img) و socket.send(img) و hashlib.sha256(img)). استخدم bytearray() بدلًا من ذلك للحصول على عرض للقراءة/الكتابة.

رايات التلميح

تقبل العديد من طرق Image وسيط hint وهو عملية OR منطقية للرايات التالية:

  • image.AREA: استخدم تحجيم المساحة عند التصغير بدلًا من الافتراضي وهو أقرب جار.

  • image.BILINEAR: استخدم التحجيم ثنائي الخطية بدلًا من التحجيم الافتراضي بأقرب جار.

  • image.BICUBIC: استخدم التحجيم ثنائي التكعيب بدلًا من التحجيم الافتراضي بأقرب جار.

  • image.CENTER: توسيط الصورة المرسومة على الشاشة. يُطبَّق هذا بعد التحجيم.

  • image.HMIRROR: عكس الصورة أفقيًّا.

  • image.VFLIP: قلب الصورة رأسيًّا.

  • image.TRANSPOSE: تبديل الصورة (تبديل x/y).

  • image.EXTRACT_RGB_CHANNEL_FIRST: إجراء استخراج rgb_channel قبل التحجيم.

  • image.APPLY_COLOR_PALETTE_FIRST: تطبيق لوحة الألوان قبل التحجيم.

  • image.SCALE_ASPECT_KEEP: تحجيم الصورة المرسومة لتلائم داخل الشاشة.

  • image.SCALE_ASPECT_EXPAND: تحجيم الصورة المرسومة لملء الشاشة (ينتج عنه اقتصاص)

  • image.SCALE_ASPECT_IGNORE: تحجيم الصورة المرسومة لملء الشاشة (ينتج عنه تمطيط).

  • image.ROTATE_90: تدوير الصورة بمقدار 90 درجة (هذا مجرد VFLIP | TRANSPOSE).

  • image.ROTATE_180: تدوير الصورة بمقدار 180 درجة (هذا مجرد HMIRROR | VFLIP).

  • image.ROTATE_270: تدوير الصورة بمقدار 270 درجة (هذا مجرد HMIRROR | TRANSPOSE).

  • image.BLACK_BACKGROUND: افتراض أن صورة الخلفية المرسوم عليها سوداء مما يسرّع المزج. مدعوم فقط من Image.draw_image() و Image.get_similarity().

class image.Image(arg: str | int | ndarray, height: int = -1, pixformat: int = -1, *, buffer: bytes | bytearray | memoryview | None = None, copy_to_fb: bool = False)

إذا كان arg سلسلة نصية فإن هذا يُنشئ كائن صورة جديد من ملف عند مسار arg. يدعم تحميل ملفات الصور bmp/pgm/ppm/jpg/jpeg/png من القرص. إذا كان copy_to_fb صحيحًا تُنسخ الصورة إلى مخزن الإطارات بدلًا من تخصيصها على الكومة.

إذا كان arg هو ndarray فإن هذا يُنشئ كائن صورة جديد من ndarray. تُعامَل كائنات ndarray ذات الشكل (w, h) كصور تدرج رمادي، و (w, h, 3) كصور RGB565. لا تُدعَم سوى ndarrays من نوع float32 في الوقت الحالي. عند إنشاء صورة بهذه الطريقة إذا مرّرت وسيط buffer فسيُستخدم لتخزين بيانات الصورة بدلًا من تخصيص مساحة على الكومة. إذا كان copy_to_fb صحيحًا تُنسخ الصورة إلى مخزن الإطارات بدلًا من تخصيصها على الكومة أو استخدام buffer.

إذا كان arg هو int فإنه يُعتبر عرض صورة جديدة ويجب أن تتبعه قيمة height وقيمة format لإنشاء كائن صورة فارغ جديد. يمكن أن يكون format أي قيمة pixformat للصورة مثل image.GRAYSCALE. ستُهيّأ الصورة بأصفار كلها. لاحظ أن قيمة buffer متوقعة لتنسيقات الصور المضغوطة. يُعتبر buffer مصدر بيانات الصورة عند إنشاء الصور بهذه الطريقة. إذا استُخدم مع copy_to_fb تُنسخ البيانات من buffer إلى مخزن الإطارات. إذا أردت إنشاء صورة JPEG من كائن bytes() أو bytearray() لـ JPEG فيمكنك تمرير width و height و image.JPEG لـ JPEG مع ضبط buffer على تدفق بايتات JPEG لإنشاء صورة JPEG.

تدعم الصور التدوين "[]". استخدم image[index] = 8/16-bit value لتعيين بكسل صورة أو image[index] للحصول على بكسل صورة يكون إما قيمة 8 بت لصور grayscale/bayer أو قيمة 16 بت لصور RGB565/YUV. تعيد الصور الثنائية قيمة 1 بت.

بالنسبة لصور JPEG يتيح لك "[]" الوصول إلى كتلة صورة JPEG المضغوطة كمصفوفة بايتات. غير أن القراءة والكتابة في مصفوفة البيانات معتمة نظرًا لأن صور JPEG هي تدفقات بايتات مضغوطة.

تدعم الصور أيضًا عمليات مخزن القراءة. يمكنك تمرير الصور إلى جميع أنواع دوال MicroPython وكأن الصورة كائن مصفوفة بايتات. وعلى وجه الخصوص، إذا أردت إرسال صورة فيمكنك ببساطة تمريرها إلى دوال الكتابة UART/SPI/I2C لتُرسَل تلقائيًّا.

الطرق الأساسية

width() int

يعيد عرض الصورة بالبكسلات.

height() int

يعيد ارتفاع الصورة بالبكسلات.

format() int

يعيد image.GRAYSCALE لصور التدرج الرمادي، و image.RGB565 لصور RGB565، و image.BAYER لصور نمط bayer، و image.JPEG لصور JPEG.

size() int

يعيد حجم الصورة بالبايتات.

bytearray() bytearray

يعيد كائن bytearray يشير إلى بيانات الصورة للوصول بالقراءة/الكتابة على مستوى البايت.

ملاحظة

تُحوَّل كائنات الصورة تلقائيًّا إلى كائنات bytes عند تمريرها إلى مُشغِّل MicroPython الذي يتطلب كائنًا شبيهًا بـ bytes. هذا وصول للقراءة فقط. استدعِ bytearray() للحصول على وصول للقراءة/الكتابة.

get_pixel(x: int, y: int, rgbtuple: bool | None = None) int | Tuple[int, int, int]

بالنسبة لصور التدرج الرمادي: يعيد قيمة بكسل التدرج الرمادي عند الموقع (x, y). بالنسبة لصور RGB565: يعيد صف بكسل RGB888 (r, g, b) عند الموقع (x, y). بالنسبة لصور نمط bayer: يعيد قيمة البكسل عند الموقع (x, y).

يعيد None إذا كان x أو y خارج الصورة.

يمكن تمرير x و y بشكل مستقل أو كصف.

rgbtuple إذا كان True يجعل هذه الطريقة تعيد صف RGB888. وإلا فإن هذه الطريقة تعيد القيمة الصحيحة للبكسل الأساسي. أي بالنسبة لصور RGB565 تعيد هذه الطريقة قيمة RGB565. الافتراضي True لصور RGB565 و False فيما عدا ذلك.

غير مدعوم على الصور المضغوطة.

ملاحظة

Image.get_pixel() و Image.set_pixel() هما الطريقتان الوحيدتان اللتان تتيحان لك معالجة صور نمط bayer. صور نمط bayer هي صور حرفية حيث تكون البكسلات في الصورة R/G/R/G/إلخ للصفوف الزوجية و G/B/G/B/إلخ للصفوف الفردية. كل بكسل 8 بت. إذا استدعيت هذه الطريقة مع ضبط rgbtuple فإن Image.get_pixel() سيُلغي فسيفساء bayer للصورة المصدر عند موقع ذلك البكسل ويعيد صف RGB888 صالحًا لموقع البكسل.

set_pixel(x: int, y: int, pixel: int | Tuple[int, int, int]) Image

بالنسبة لصور التدرج الرمادي: يضبط البكسل عند الموقع (x, y) على قيمة التدرج الرمادي pixel. بالنسبة لصور RGB565: يضبط البكسل عند الموقع (x, y) على صف RGB888 (r, g, b) pixel. بالنسبة لصور نمط bayer: يضبط قيمة البكسل عند الموقع (x, y) على القيمة pixel.

يعيد كائن الصورة حتى تتمكن من استدعاء طريقة أخرى باستخدام تدوين ..

يمكن تمرير x و y بشكل مستقل أو كصف.

يمكن أن يكون pixel إما صف RGB888 (r, g, b) أو قيمة البكسل الأساسية (أي قيمة RGB565 لصور RGB565 أو قيمة 8 بت لصور التدرج الرمادي).

غير مدعوم على الصور المضغوطة.

ملاحظة

Image.get_pixel() و Image.set_pixel() هما الطريقتان الوحيدتان اللتان تتيحان لك معالجة صور نمط bayer. صور نمط bayer هي صور حرفية حيث تكون البكسلات في الصورة R/G/R/G/إلخ للصفوف الزوجية و G/B/G/B/إلخ للصفوف الفردية. كل بكسل 8 بت. إذا استدعيت هذه الطريقة مع صف RGB888 فإن قيمة التدرج الرمادي لذلك الصف RGB888 تُستخرَج وتُضبط على موقع البكسل.

طرق التحويل

to_ndarray(dtype: str, buffer: bytes | bytearray | memoryview | None = None) ndarray

يعيد كائن ndarray مُنشأ من الصورة. يعمل هذا فقط على صور GRAYSCALE أو RGB565 حاليًّا.

يمكن أن يكون dtype هو b أو B أو f لإنشاء ndarray صحيح 8 بت بإشارة، أو صحيح 8 بت بلا إشارة، أو عائم 32 بت. تُحوَّل صور GRAYSCALE مباشرة إلى كائنات ndarray صحيحة 8 بت بلا إشارة. بالنسبة لكائنات ndarray الصحيحة 8 بت بإشارة تُربَط القيم (0:255) بـ (-127:128). بالنسبة لكائنات ndarray العائمة 32 بت تُربَط القيم بـ (0.0:255.0). تُحوَّل صور RGB565 إلى كائنات ndarray ثلاثية القنوات ويُطبَّق نفس العملية الموصوفة أعلاه لصور GRAYSCALE على كل قناة بحسب dtype. لاحظ أن dtype يقبل أيضًا القيم الصحيحة (مثل ord()) لـ b و B و f على التوالي.

buffer إذا لم يكن None فهو كائن bytearray يُستخدم كمخزن لـ ndarray. إذا كان None يُخصَّص مخزن جديد على الكومة لتخزين بيانات صورة ndarray. يمكنك استخدام وسيط buffer لتخصيص ndarray مباشرة في مخزن مُخصَّص مسبقًا موفّرًا تخصيص كومة وعملية نسخ.

يكون لـ ndarray المُعاد الشكل (height, width) لصور GRAYSCALE و (height, width, 3) لصور RGB565.

to_bitmap(x_scale: float = 1.0, y_scale: float = 1.0, roi: Tuple[int, int, int, int] | None = None, rgb_channel: int = -1, alpha: int = 255, color_palette: int | Image | None = None, alpha_palette: Image | None = None, hint: int = 0, transform: ndarray | None = None, copy: bool = False, copy_to_fb: bool = False) Image

يحوّل صورة إلى صورة خريطة بت (بت واحد لكل بكسل).

x_scale يتحكم في مقدار تحجيم الصورة المعروضة في اتجاه x (عائم). إذا كانت هذه القيمة سالبة ستُقلَب الصورة أفقيًّا. لاحظ أنه إذا لم يُحدَّد y_scale فسيطابق x_scale للحفاظ على نسبة العرض إلى الارتفاع.

y_scale يتحكم في مقدار تحجيم الصورة المعروضة في اتجاه y (عائم). إذا كانت هذه القيمة سالبة ستُقلَب الصورة رأسيًّا. لاحظ أنه إذا لم يُحدَّد x_scale فسيطابق x_scale للحفاظ على نسبة العرض إلى الارتفاع.

roi هو صف مستطيل منطقة الاهتمام (x, y, w, h) للصورة المصدر المراد رسمها. يتيح لك هذا استخراج البكسلات في منطقة الاهتمام فقط لتحجيمها ورسمها على الصورة الوجهة.

rgb_channel هو قناة RGB (0=R، G=1، B=2) المراد استخراجها من صورة RGB565 (إذا مُرِّرت) وعرضها على الصورة الوجهة. على سبيل المثال، إذا مرّرت rgb_channel=1 فسيستخرج هذا القناة الخضراء من صورة RGB565 المصدر ويرسمها بتدرج رمادي على الصورة الوجهة.

alpha يتحكم في مقدار مزج الصورة المصدر في الصورة الوجهة. القيمة 255 ترسم صورة مصدر معتمة بينما القيمة الأقل من 255 تنتج مزجًا بين الصورة المصدر والصورة الوجهة. القيمة 0 لا تؤدي إلى أي تعديل على الصورة الوجهة.

color_palette إذا لم يكن None يمكن أن يكون تعدادًا للوحة ألوان أو صورة RGB565 من 256 بكسل إجمالًا تُستخدم كجدول بحث للألوان على قيمة التدرج الرمادي لأي صورة مصدر. يُطبَّق هذا بعد استخراج rgb_channel إذا استُخدم.

alpha_palette إذا لم يكن None يمكن أن يكون صورة GRAYSCALE من 256 بكسل إجمالًا تُستخدم كلوحة ألفا تُعدِّل قيمة alpha للصورة المصدر المرسومة على مستوى البكسل مما يتيح لك التحكم بدقة في قيمة ألفا للبكسلات بناءً على قيمة تدرجها الرمادي. قيمة البكسل 255 في جدول بحث ألفا تكون معتمة بينما أي قيمة أقل من 255 تصبح أكثر شفافية حتى 0. يُطبَّق هذا بعد استخراج rgb_channel إذا استُخدم.

hint هو عملية OR منطقية للرايات المدرجة في رايات التلميح (باستثناء image.BLACK_BACKGROUND غير المدعوم هنا).

transform هو ndarray بحجم 3x3 يُستخدم لإجراء تحويل منظوري على الصورة. مدعوم فقط على OpenMV Cam N6 حاليًّا لأنه يحتوي على GPU يمكنه القيام بذلك عتاديًّا.

copy إذا كان True يُنشئ نسخة عميقة على الكومة من الصورة التي حُوِّلت بدلًا من تحويل الصورة الأصلية في مكانها.

copy_to_fb إذا كان True تُحمَّل الصورة مباشرة إلى مخزن الإطارات. لـ copy_to_fb أولوية على copy. ليس لهذا أي تأثير خاص إذا كانت الصورة موجودة بالفعل في مخزن الإطارات.

ملاحظة

صور خريطة البت تشبه صور التدرج الرمادي لكن بقيمتي بكسل اثنتين فقط - 0 و 1. علاوة على ذلك، تُعبَّأ صور خريطة البت بحيث تخزّن بتًّا واحدًا فقط لكل بكسل مما يجعلها صغيرة جدًّا. تتيح مكتبة صور OpenMV استخدام صور خريطة البت في جميع الأماكن التي يمكن فيها استخدام صور sensor.GRAYSCALE و sensor.RGB565. غير أن العديد من العمليات عند تطبيقها على صور خريطة البت لا معنى لها لأن صور خريطة البت لها قيمتان فقط. توصي OpenMV باستخدام صور خريطة البت لقيم mask في العمليات وما شابه لأنها تلائم كومة MicroPython بسهولة كبيرة. أخيرًا، تُفسَّر قيمتا بكسل خريطة البت 0 و 1 كأسود وأبيض عند تطبيقها على صور sensor.GRAYSCALE أو sensor.RGB565. تتولى المكتبة التحويل تلقائيًّا.

يعيد كائن الصورة حتى تتمكن من استدعاء طريقة أخرى باستخدام تدوين ..

to_grayscale(x_scale: float = 1.0, y_scale: float = 1.0, roi: Tuple[int, int, int, int] | None = None, rgb_channel: int = -1, alpha: int = 255, color_palette: int | Image | None = None, alpha_palette: Image | None = None, hint: int = 0, transform: ndarray | None = None, copy: bool = False, copy_to_fb: bool = False) Image

يحوّل صورة إلى صورة تدرج رمادي (8 بت لكل بكسل).

x_scale يتحكم في مقدار تحجيم الصورة المعروضة في اتجاه x (عائم). إذا كانت هذه القيمة سالبة ستُقلَب الصورة أفقيًّا. لاحظ أنه إذا لم يُحدَّد y_scale فسيطابق x_scale للحفاظ على نسبة العرض إلى الارتفاع.

y_scale يتحكم في مقدار تحجيم الصورة المعروضة في اتجاه y (عائم). إذا كانت هذه القيمة سالبة ستُقلَب الصورة رأسيًّا. لاحظ أنه إذا لم يُحدَّد x_scale فسيطابق x_scale للحفاظ على نسبة العرض إلى الارتفاع.

roi هو صف مستطيل منطقة الاهتمام (x, y, w, h) للصورة المصدر المراد رسمها. يتيح لك هذا استخراج البكسلات في منطقة الاهتمام فقط لتحجيمها ورسمها على الصورة الوجهة.

rgb_channel هو قناة RGB (0=R، G=1، B=2) المراد استخراجها من صورة RGB565 (إذا مُرِّرت) وعرضها على الصورة الوجهة. على سبيل المثال، إذا مرّرت rgb_channel=1 فسيستخرج هذا القناة الخضراء من صورة RGB565 المصدر ويرسمها بتدرج رمادي على الصورة الوجهة.

alpha يتحكم في مقدار مزج الصورة المصدر في الصورة الوجهة. القيمة 255 ترسم صورة مصدر معتمة بينما القيمة الأقل من 255 تنتج مزجًا بين الصورة المصدر والصورة الوجهة. القيمة 0 لا تؤدي إلى أي تعديل على الصورة الوجهة.

color_palette إذا لم يكن None يمكن أن يكون تعدادًا للوحة ألوان أو صورة RGB565 من 256 بكسل إجمالًا تُستخدم كجدول بحث للألوان على قيمة التدرج الرمادي لأي صورة مصدر. يُطبَّق هذا بعد استخراج rgb_channel إذا استُخدم.

alpha_palette إذا لم يكن None يمكن أن يكون صورة GRAYSCALE من 256 بكسل إجمالًا تُستخدم كلوحة ألفا تُعدِّل قيمة alpha للصورة المصدر المرسومة على مستوى البكسل مما يتيح لك التحكم بدقة في قيمة ألفا للبكسلات بناءً على قيمة تدرجها الرمادي. قيمة البكسل 255 في جدول بحث ألفا تكون معتمة بينما أي قيمة أقل من 255 تصبح أكثر شفافية حتى 0. يُطبَّق هذا بعد استخراج rgb_channel إذا استُخدم.

hint هو عملية OR منطقية للرايات المدرجة في رايات التلميح (باستثناء image.BLACK_BACKGROUND غير المدعوم هنا).

transform هو ndarray بحجم 3x3 يُستخدم لإجراء تحويل منظوري على الصورة. مدعوم فقط على OpenMV Cam N6 حاليًّا لأنه يحتوي على GPU يمكنه القيام بذلك عتاديًّا.

copy إذا كان True يُنشئ نسخة عميقة على الكومة من الصورة التي حُوِّلت بدلًا من تحويل الصورة الأصلية في مكانها.

copy_to_fb إذا كان True تُحمَّل الصورة مباشرة إلى مخزن الإطارات. لـ copy_to_fb أولوية على copy. ليس لهذا أي تأثير خاص إذا كانت الصورة موجودة بالفعل في مخزن الإطارات.

يعيد كائن الصورة حتى تتمكن من استدعاء طريقة أخرى باستخدام تدوين ..

to_rgb565(x_scale: float = 1.0, y_scale: float = 1.0, roi: Tuple[int, int, int, int] | None = None, rgb_channel: int = -1, alpha: int = 255, color_palette: int | Image | None = None, alpha_palette: Image | None = None, hint: int = 0, transform: ndarray | None = None, copy: bool = False, copy_to_fb: bool = False) Image

يحوّل صورة إلى صورة RGB565 (16 بت لكل بكسل).

x_scale يتحكم في مقدار تحجيم الصورة المعروضة في اتجاه x (عائم). إذا كانت هذه القيمة سالبة ستُقلَب الصورة أفقيًّا. لاحظ أنه إذا لم يُحدَّد y_scale فسيطابق x_scale للحفاظ على نسبة العرض إلى الارتفاع.

y_scale يتحكم في مقدار تحجيم الصورة المعروضة في اتجاه y (عائم). إذا كانت هذه القيمة سالبة ستُقلَب الصورة رأسيًّا. لاحظ أنه إذا لم يُحدَّد x_scale فسيطابق x_scale للحفاظ على نسبة العرض إلى الارتفاع.

roi هو صف مستطيل منطقة الاهتمام (x, y, w, h) للصورة المصدر المراد رسمها. يتيح لك هذا استخراج البكسلات في منطقة الاهتمام فقط لتحجيمها ورسمها على الصورة الوجهة.

rgb_channel هو قناة RGB (0=R، G=1، B=2) المراد استخراجها من صورة RGB565 (إذا مُرِّرت) وعرضها على الصورة الوجهة. على سبيل المثال، إذا مرّرت rgb_channel=1 فسيستخرج هذا القناة الخضراء من صورة RGB565 المصدر ويرسمها بتدرج رمادي على الصورة الوجهة.

alpha يتحكم في مقدار مزج الصورة المصدر في الصورة الوجهة. القيمة 255 ترسم صورة مصدر معتمة بينما القيمة الأقل من 255 تنتج مزجًا بين الصورة المصدر والصورة الوجهة. القيمة 0 لا تؤدي إلى أي تعديل على الصورة الوجهة.

color_palette إذا لم يكن None يمكن أن يكون تعدادًا للوحة ألوان أو صورة RGB565 من 256 بكسل إجمالًا تُستخدم كجدول بحث للألوان على قيمة التدرج الرمادي لأي صورة مصدر. يُطبَّق هذا بعد استخراج rgb_channel إذا استُخدم.

alpha_palette إذا لم يكن None يمكن أن يكون صورة GRAYSCALE من 256 بكسل إجمالًا تُستخدم كلوحة ألفا تُعدِّل قيمة alpha للصورة المصدر المرسومة على مستوى البكسل مما يتيح لك التحكم بدقة في قيمة ألفا للبكسلات بناءً على قيمة تدرجها الرمادي. قيمة البكسل 255 في جدول بحث ألفا تكون معتمة بينما أي قيمة أقل من 255 تصبح أكثر شفافية حتى 0. يُطبَّق هذا بعد استخراج rgb_channel إذا استُخدم.

hint هو عملية OR منطقية للرايات المدرجة في رايات التلميح (باستثناء image.BLACK_BACKGROUND غير المدعوم هنا).

transform هو ndarray بحجم 3x3 يُستخدم لإجراء تحويل منظوري على الصورة. مدعوم فقط على OpenMV Cam N6 حاليًّا لأنه يحتوي على GPU يمكنه القيام بذلك عتاديًّا.

copy إذا كان True يُنشئ نسخة عميقة على الكومة من الصورة التي حُوِّلت بدلًا من تحويل الصورة الأصلية في مكانها.

copy_to_fb إذا كان True تُحمَّل الصورة مباشرة إلى مخزن الإطارات. لـ copy_to_fb أولوية على copy. ليس لهذا أي تأثير خاص إذا كانت الصورة موجودة بالفعل في مخزن الإطارات.

يعيد كائن الصورة حتى تتمكن من استدعاء طريقة أخرى باستخدام تدوين ..

to_rainbow(x_scale: float = 1.0, y_scale: float = 1.0, roi: Tuple[int, int, int, int] | None = None, rgb_channel: int = -1, alpha: int = 255, color_palette: int | Image = PALETTE_RAINBOW, alpha_palette: Image | None = None, hint: int = 0, transform: ndarray | None = None, copy: bool = False, copy_to_fb: bool = False) Image

يحوّل صورة إلى صورة قوس قزح RGB565 (16 بت لكل بكسل).

x_scale يتحكم في مقدار تحجيم الصورة المعروضة في اتجاه x (عائم). إذا كانت هذه القيمة سالبة ستُقلَب الصورة أفقيًّا. لاحظ أنه إذا لم يُحدَّد y_scale فسيطابق x_scale للحفاظ على نسبة العرض إلى الارتفاع.

y_scale يتحكم في مقدار تحجيم الصورة المعروضة في اتجاه y (عائم). إذا كانت هذه القيمة سالبة ستُقلَب الصورة رأسيًّا. لاحظ أنه إذا لم يُحدَّد x_scale فسيطابق x_scale للحفاظ على نسبة العرض إلى الارتفاع.

roi هو صف مستطيل منطقة الاهتمام (x, y, w, h) للصورة المصدر المراد رسمها. يتيح لك هذا استخراج البكسلات في منطقة الاهتمام فقط لتحجيمها ورسمها على الصورة الوجهة.

rgb_channel هو قناة RGB (0=R، G=1، B=2) المراد استخراجها من صورة RGB565 (إذا مُرِّرت) وعرضها على الصورة الوجهة. على سبيل المثال، إذا مرّرت rgb_channel=1 فسيستخرج هذا القناة الخضراء من صورة RGB565 المصدر ويرسمها بتدرج رمادي على الصورة الوجهة.

alpha يتحكم في مقدار مزج الصورة المصدر في الصورة الوجهة. القيمة 255 ترسم صورة مصدر معتمة بينما القيمة الأقل من 255 تنتج مزجًا بين الصورة المصدر والصورة الوجهة. القيمة 0 لا تؤدي إلى أي تعديل على الصورة الوجهة.

color_palette إذا لم يكن None يمكن أن يكون تعدادًا للوحة ألوان أو صورة RGB565 من 256 بكسل إجمالًا تُستخدم كجدول بحث للألوان على قيمة التدرج الرمادي لأي صورة مصدر. يُطبَّق هذا بعد استخراج rgb_channel إذا استُخدم.

alpha_palette إذا لم يكن None يمكن أن يكون صورة GRAYSCALE من 256 بكسل إجمالًا تُستخدم كلوحة ألفا تُعدِّل قيمة alpha للصورة المصدر المرسومة على مستوى البكسل مما يتيح لك التحكم بدقة في قيمة ألفا للبكسلات بناءً على قيمة تدرجها الرمادي. قيمة البكسل 255 في جدول بحث ألفا تكون معتمة بينما أي قيمة أقل من 255 تصبح أكثر شفافية حتى 0. يُطبَّق هذا بعد استخراج rgb_channel إذا استُخدم.

hint هو عملية OR منطقية للرايات المدرجة في رايات التلميح (باستثناء image.BLACK_BACKGROUND غير المدعوم هنا).

transform هو ndarray بحجم 3x3 يُستخدم لإجراء تحويل منظوري على الصورة. مدعوم فقط على OpenMV Cam N6 حاليًّا لأنه يحتوي على GPU يمكنه القيام بذلك عتاديًّا.

copy إذا كان True يُنشئ نسخة عميقة على الكومة من الصورة التي حُوِّلت بدلًا من تحويل الصورة الأصلية في مكانها.

copy_to_fb إذا كان True تُحمَّل الصورة مباشرة إلى مخزن الإطارات. لـ copy_to_fb أولوية على copy. ليس لهذا أي تأثير خاص إذا كانت الصورة موجودة بالفعل في مخزن الإطارات.

يعيد كائن الصورة حتى تتمكن من استدعاء طريقة أخرى باستخدام تدوين ..

to_ironbow(x_scale: float = 1.0, y_scale: float = 1.0, roi: Tuple[int, int, int, int] | None = None, rgb_channel: int = -1, alpha: int = 255, color_palette: int | Image = PALETTE_IRONBOW, alpha_palette: Image | None = None, hint: int = 0, transform: ndarray | None = None, copy: bool = False, copy_to_fb: bool = False) Image

يحوّل صورة إلى صورة ironbow بتنسيق RGB565 (16 بت لكل بكسل).

x_scale يتحكم في مقدار تحجيم الصورة المعروضة في اتجاه x (عائم). إذا كانت هذه القيمة سالبة ستُقلَب الصورة أفقيًّا. لاحظ أنه إذا لم يُحدَّد y_scale فسيطابق x_scale للحفاظ على نسبة العرض إلى الارتفاع.

y_scale يتحكم في مقدار تحجيم الصورة المعروضة في اتجاه y (عائم). إذا كانت هذه القيمة سالبة ستُقلَب الصورة رأسيًّا. لاحظ أنه إذا لم يُحدَّد x_scale فسيطابق x_scale للحفاظ على نسبة العرض إلى الارتفاع.

roi هو صف مستطيل منطقة الاهتمام (x, y, w, h) للصورة المصدر المراد رسمها. يتيح لك هذا استخراج البكسلات في منطقة الاهتمام فقط لتحجيمها ورسمها على الصورة الوجهة.

rgb_channel هو قناة RGB (0=R، G=1، B=2) المراد استخراجها من صورة RGB565 (إذا مُرِّرت) وعرضها على الصورة الوجهة. على سبيل المثال، إذا مرّرت rgb_channel=1 فسيستخرج هذا القناة الخضراء من صورة RGB565 المصدر ويرسمها بتدرج رمادي على الصورة الوجهة.

alpha يتحكم في مقدار مزج الصورة المصدر في الصورة الوجهة. القيمة 255 ترسم صورة مصدر معتمة بينما القيمة الأقل من 255 تنتج مزجًا بين الصورة المصدر والصورة الوجهة. القيمة 0 لا تؤدي إلى أي تعديل على الصورة الوجهة.

color_palette إذا لم يكن None يمكن أن يكون تعدادًا للوحة ألوان أو صورة RGB565 من 256 بكسل إجمالًا تُستخدم كجدول بحث للألوان على قيمة التدرج الرمادي لأي صورة مصدر. يُطبَّق هذا بعد استخراج rgb_channel إذا استُخدم.

alpha_palette إذا لم يكن None يمكن أن يكون صورة GRAYSCALE من 256 بكسل إجمالًا تُستخدم كلوحة ألفا تُعدِّل قيمة alpha للصورة المصدر المرسومة على مستوى البكسل مما يتيح لك التحكم بدقة في قيمة ألفا للبكسلات بناءً على قيمة تدرجها الرمادي. قيمة البكسل 255 في جدول بحث ألفا تكون معتمة بينما أي قيمة أقل من 255 تصبح أكثر شفافية حتى 0. يُطبَّق هذا بعد استخراج rgb_channel إذا استُخدم.

hint هو عملية OR منطقية للرايات المدرجة في رايات التلميح (باستثناء image.BLACK_BACKGROUND غير المدعوم هنا).

transform هو ndarray بحجم 3x3 يُستخدم لإجراء تحويل منظوري على الصورة. مدعوم فقط على OpenMV Cam N6 حاليًّا لأنه يحتوي على GPU يمكنه القيام بذلك عتاديًّا.

copy إذا كان True يُنشئ نسخة عميقة على الكومة من الصورة التي حُوِّلت بدلًا من تحويل الصورة الأصلية في مكانها.

copy_to_fb إذا كان True تُحمَّل الصورة مباشرة إلى مخزن الإطارات. لـ copy_to_fb أولوية على copy. ليس لهذا أي تأثير خاص إذا كانت الصورة موجودة بالفعل في مخزن الإطارات.

يعيد كائن الصورة حتى تتمكن من استدعاء طريقة أخرى باستخدام تدوين ..

to_depth(x_scale: float = 1.0, y_scale: float = 1.0, roi: Tuple[int, int, int, int] | None = None, rgb_channel: int = -1, alpha: int = 255, color_palette: int | Image = PALETTE_IRONBOW, alpha_palette: Image | None = None, hint: int = 0, transform: ndarray | None = None, copy: bool = False, copy_to_fb: bool = False) Image

يحوّل صورة إلى صورة عمق RGB565 (16 بت لكل بكسل).

x_scale يتحكم في مقدار تحجيم الصورة المعروضة في اتجاه x (عائم). إذا كانت هذه القيمة سالبة ستُقلَب الصورة أفقيًّا. لاحظ أنه إذا لم يُحدَّد y_scale فسيطابق x_scale للحفاظ على نسبة العرض إلى الارتفاع.

y_scale يتحكم في مقدار تحجيم الصورة المعروضة في اتجاه y (عائم). إذا كانت هذه القيمة سالبة ستُقلَب الصورة رأسيًّا. لاحظ أنه إذا لم يُحدَّد x_scale فسيطابق x_scale للحفاظ على نسبة العرض إلى الارتفاع.

roi هو صف مستطيل منطقة الاهتمام (x, y, w, h) للصورة المصدر المراد رسمها. يتيح لك هذا استخراج البكسلات في منطقة الاهتمام فقط لتحجيمها ورسمها على الصورة الوجهة.

rgb_channel هو قناة RGB (0=R، G=1، B=2) المراد استخراجها من صورة RGB565 (إذا مُرِّرت) وعرضها على الصورة الوجهة. على سبيل المثال، إذا مرّرت rgb_channel=1 فسيستخرج هذا القناة الخضراء من صورة RGB565 المصدر ويرسمها بتدرج رمادي على الصورة الوجهة.

alpha يتحكم في مقدار مزج الصورة المصدر في الصورة الوجهة. القيمة 255 ترسم صورة مصدر معتمة بينما القيمة الأقل من 255 تنتج مزجًا بين الصورة المصدر والصورة الوجهة. القيمة 0 لا تؤدي إلى أي تعديل على الصورة الوجهة.

color_palette إذا لم يكن None يمكن أن يكون image.PALETTE_DEPTH أو صورة RGB565 من 256 بكسل إجمالًا تُستخدم كجدول بحث للألوان على قيمة التدرج الرمادي لأي صورة مصدر. يُطبَّق هذا بعد استخراج rgb_channel إذا استُخدم.

alpha_palette إذا لم يكن None يمكن أن يكون صورة GRAYSCALE من 256 بكسل إجمالًا تُستخدم كلوحة ألفا تُعدِّل قيمة alpha للصورة المصدر المرسومة على مستوى البكسل مما يتيح لك التحكم بدقة في قيمة ألفا للبكسلات بناءً على قيمة تدرجها الرمادي. قيمة البكسل 255 في جدول بحث ألفا تكون معتمة بينما أي قيمة أقل من 255 تصبح أكثر شفافية حتى 0. يُطبَّق هذا بعد استخراج rgb_channel إذا استُخدم.

hint هو عملية OR منطقية للرايات المدرجة في رايات التلميح (باستثناء image.BLACK_BACKGROUND غير المدعوم هنا).

transform هو ndarray بحجم 3x3 يُستخدم لإجراء تحويل منظوري على الصورة. مدعوم فقط على OpenMV Cam N6 حاليًّا لأنه يحتوي على GPU يمكنه القيام بذلك عتاديًّا.

copy إذا كان True يُنشئ نسخة عميقة على الكومة من الصورة التي حُوِّلت بدلًا من تحويل الصورة الأصلية في مكانها.

copy_to_fb إذا كان True تُحمَّل الصورة مباشرة إلى مخزن الإطارات. لـ copy_to_fb أولوية على copy. ليس لهذا أي تأثير خاص إذا كانت الصورة موجودة بالفعل في مخزن الإطارات.

يعيد كائن الصورة حتى تتمكن من استدعاء طريقة أخرى باستخدام تدوين ..

to_evt_dark(x_scale: float = 1.0, y_scale: float = 1.0, roi: Tuple[int, int, int, int] | None = None, rgb_channel: int = -1, alpha: int = 255, color_palette: int | Image = PALETTE_IRONBOW, alpha_palette: Image | None = None, hint: int = 0, transform: ndarray | None = None, copy: bool = False, copy_to_fb: bool = False) Image

يحوّل صورة إلى صورة حدث داكن بتنسيق RGB565 (16 بت لكل بكسل).

x_scale يتحكم في مقدار تحجيم الصورة المعروضة في اتجاه x (عائم). إذا كانت هذه القيمة سالبة ستُقلَب الصورة أفقيًّا. لاحظ أنه إذا لم يُحدَّد y_scale فسيطابق x_scale للحفاظ على نسبة العرض إلى الارتفاع.

y_scale يتحكم في مقدار تحجيم الصورة المعروضة في اتجاه y (عائم). إذا كانت هذه القيمة سالبة ستُقلَب الصورة رأسيًّا. لاحظ أنه إذا لم يُحدَّد x_scale فسيطابق x_scale للحفاظ على نسبة العرض إلى الارتفاع.

roi هو صف مستطيل منطقة الاهتمام (x, y, w, h) للصورة المصدر المراد رسمها. يتيح لك هذا استخراج البكسلات في منطقة الاهتمام فقط لتحجيمها ورسمها على الصورة الوجهة.

rgb_channel هو قناة RGB (0=R، G=1، B=2) المراد استخراجها من صورة RGB565 (إذا مُرِّرت) وعرضها على الصورة الوجهة. على سبيل المثال، إذا مرّرت rgb_channel=1 فسيستخرج هذا القناة الخضراء من صورة RGB565 المصدر ويرسمها بتدرج رمادي على الصورة الوجهة.

alpha يتحكم في مقدار مزج الصورة المصدر في الصورة الوجهة. القيمة 255 ترسم صورة مصدر معتمة بينما القيمة الأقل من 255 تنتج مزجًا بين الصورة المصدر والصورة الوجهة. القيمة 0 لا تؤدي إلى أي تعديل على الصورة الوجهة.

color_palette إذا لم يكن None يمكن أن يكون تعدادًا للوحة ألوان أو صورة RGB565 من 256 بكسل إجمالًا تُستخدم كجدول بحث للألوان على قيمة التدرج الرمادي لأي صورة مصدر. يُطبَّق هذا بعد استخراج rgb_channel إذا استُخدم.

alpha_palette إذا لم يكن None يمكن أن يكون صورة GRAYSCALE من 256 بكسل إجمالًا تُستخدم كلوحة ألفا تُعدِّل قيمة alpha للصورة المصدر المرسومة على مستوى البكسل مما يتيح لك التحكم بدقة في قيمة ألفا للبكسلات بناءً على قيمة تدرجها الرمادي. قيمة البكسل 255 في جدول بحث ألفا تكون معتمة بينما أي قيمة أقل من 255 تصبح أكثر شفافية حتى 0. يُطبَّق هذا بعد استخراج rgb_channel إذا استُخدم.

hint هو عملية OR منطقية للرايات المدرجة في رايات التلميح (باستثناء image.BLACK_BACKGROUND غير المدعوم هنا).

transform هو ndarray بحجم 3x3 يُستخدم لإجراء تحويل منظوري على الصورة. مدعوم فقط على OpenMV Cam N6 حاليًّا لأنه يحتوي على GPU يمكنه القيام بذلك عتاديًّا.

copy إذا كان True يُنشئ نسخة عميقة على الكومة من الصورة التي حُوِّلت بدلًا من تحويل الصورة الأصلية في مكانها.

copy_to_fb إذا كان True تُحمَّل الصورة مباشرة إلى مخزن الإطارات. لـ copy_to_fb أولوية على copy. ليس لهذا أي تأثير خاص إذا كانت الصورة موجودة بالفعل في مخزن الإطارات.

يعيد كائن الصورة حتى تتمكن من استدعاء طريقة أخرى باستخدام تدوين ..

to_evt_light(x_scale: float = 1.0, y_scale: float = 1.0, roi: Tuple[int, int, int, int] | None = None, rgb_channel: int = -1, alpha: int = 255, color_palette: int | Image = PALETTE_IRONBOW, alpha_palette: Image | None = None, hint: int = 0, transform: ndarray | None = None, copy: bool = False, copy_to_fb: bool = False) Image

يحوّل صورة إلى صورة حدث فاتح بتنسيق RGB565 (16 بت لكل بكسل).

x_scale يتحكم في مقدار تحجيم الصورة المعروضة في اتجاه x (عائم). إذا كانت هذه القيمة سالبة ستُقلَب الصورة أفقيًّا. لاحظ أنه إذا لم يُحدَّد y_scale فسيطابق x_scale للحفاظ على نسبة العرض إلى الارتفاع.

y_scale يتحكم في مقدار تحجيم الصورة المعروضة في اتجاه y (عائم). إذا كانت هذه القيمة سالبة ستُقلَب الصورة رأسيًّا. لاحظ أنه إذا لم يُحدَّد x_scale فسيطابق x_scale للحفاظ على نسبة العرض إلى الارتفاع.

roi هو صف مستطيل منطقة الاهتمام (x, y, w, h) للصورة المصدر المراد رسمها. يتيح لك هذا استخراج البكسلات في منطقة الاهتمام فقط لتحجيمها ورسمها على الصورة الوجهة.

rgb_channel هو قناة RGB (0=R، G=1، B=2) المراد استخراجها من صورة RGB565 (إذا مُرِّرت) وعرضها على الصورة الوجهة. على سبيل المثال، إذا مرّرت rgb_channel=1 فسيستخرج هذا القناة الخضراء من صورة RGB565 المصدر ويرسمها بتدرج رمادي على الصورة الوجهة.

alpha يتحكم في مقدار مزج الصورة المصدر في الصورة الوجهة. القيمة 255 ترسم صورة مصدر معتمة بينما القيمة الأقل من 255 تنتج مزجًا بين الصورة المصدر والصورة الوجهة. القيمة 0 لا تؤدي إلى أي تعديل على الصورة الوجهة.

color_palette إذا لم يكن None يمكن أن يكون تعدادًا للوحة ألوان أو صورة RGB565 من 256 بكسل إجمالًا تُستخدم كجدول بحث للألوان على قيمة التدرج الرمادي لأي صورة مصدر. يُطبَّق هذا بعد استخراج rgb_channel إذا استُخدم.

alpha_palette إذا لم يكن None يمكن أن يكون صورة GRAYSCALE من 256 بكسل إجمالًا تُستخدم كلوحة ألفا تُعدِّل قيمة alpha للصورة المصدر المرسومة على مستوى البكسل مما يتيح لك التحكم بدقة في قيمة ألفا للبكسلات بناءً على قيمة تدرجها الرمادي. قيمة البكسل 255 في جدول بحث ألفا تكون معتمة بينما أي قيمة أقل من 255 تصبح أكثر شفافية حتى 0. يُطبَّق هذا بعد استخراج rgb_channel إذا استُخدم.

hint هو عملية OR منطقية للرايات المدرجة في رايات التلميح (باستثناء image.BLACK_BACKGROUND غير المدعوم هنا).

transform هو ndarray بحجم 3x3 يُستخدم لإجراء تحويل منظوري على الصورة. مدعوم فقط على OpenMV Cam N6 حاليًّا لأنه يحتوي على GPU يمكنه القيام بذلك عتاديًّا.

copy إذا كان True يُنشئ نسخة عميقة على الكومة من الصورة التي حُوِّلت بدلًا من تحويل الصورة الأصلية في مكانها.

copy_to_fb إذا كان True تُحمَّل الصورة مباشرة إلى مخزن الإطارات. لـ copy_to_fb أولوية على copy. ليس لهذا أي تأثير خاص إذا كانت الصورة موجودة بالفعل في مخزن الإطارات.

يعيد كائن الصورة حتى تتمكن من استدعاء طريقة أخرى باستخدام تدوين ..

to_jpeg(x_scale: float = 1.0, y_scale: float = 1.0, roi: Tuple[int, int, int, int] | None = None, rgb_channel: int = -1, alpha: int = 255, color_palette: int | Image | None = None, alpha_palette: Image | None = None, hint: int = 0, transform: ndarray | None = None, copy: bool = False, copy_to_fb: bool = False, quality: int = 90, subsampling: int = 0) Image

يحوّل صورة إلى صورة JPEG.

x_scale يتحكم في مقدار تحجيم الصورة المعروضة في اتجاه x (عائم). إذا كانت هذه القيمة سالبة ستُقلَب الصورة أفقيًّا. لاحظ أنه إذا لم يُحدَّد y_scale فسيطابق x_scale للحفاظ على نسبة العرض إلى الارتفاع.

y_scale يتحكم في مقدار تحجيم الصورة المعروضة في اتجاه y (عائم). إذا كانت هذه القيمة سالبة ستُقلَب الصورة رأسيًّا. لاحظ أنه إذا لم يُحدَّد x_scale فسيطابق x_scale للحفاظ على نسبة العرض إلى الارتفاع.

roi هو صف مستطيل منطقة الاهتمام (x, y, w, h) للصورة المصدر المراد رسمها. يتيح لك هذا استخراج البكسلات في منطقة الاهتمام فقط لتحجيمها ورسمها على الصورة الوجهة.

rgb_channel هو قناة RGB (0=R، G=1، B=2) المراد استخراجها من صورة RGB565 (إذا مُرِّرت) وعرضها على الصورة الوجهة. على سبيل المثال، إذا مرّرت rgb_channel=1 فسيستخرج هذا القناة الخضراء من صورة RGB565 المصدر ويرسمها بتدرج رمادي على الصورة الوجهة.

alpha يتحكم في مقدار مزج الصورة المصدر في الصورة الوجهة. القيمة 255 ترسم صورة مصدر معتمة بينما القيمة الأقل من 255 تنتج مزجًا بين الصورة المصدر والصورة الوجهة. القيمة 0 لا تؤدي إلى أي تعديل على الصورة الوجهة.

color_palette إذا لم يكن None يمكن أن يكون تعدادًا للوحة ألوان أو صورة RGB565 من 256 بكسل إجمالًا تُستخدم كجدول بحث للألوان على قيمة التدرج الرمادي لأي صورة مصدر. يُطبَّق هذا بعد استخراج rgb_channel إذا استُخدم.

alpha_palette إذا لم يكن None يمكن أن يكون صورة GRAYSCALE من 256 بكسل إجمالًا تُستخدم كلوحة ألفا تُعدِّل قيمة alpha للصورة المصدر المرسومة على مستوى البكسل مما يتيح لك التحكم بدقة في قيمة ألفا للبكسلات بناءً على قيمة تدرجها الرمادي. قيمة البكسل 255 في جدول بحث ألفا تكون معتمة بينما أي قيمة أقل من 255 تصبح أكثر شفافية حتى 0. يُطبَّق هذا بعد استخراج rgb_channel إذا استُخدم.

hint هو عملية OR منطقية للرايات المدرجة في رايات التلميح (باستثناء image.BLACK_BACKGROUND غير المدعوم هنا).

transform هو ndarray بحجم 3x3 يُستخدم لإجراء تحويل منظوري على الصورة. مدعوم فقط على OpenMV Cam N6 حاليًّا لأنه يحتوي على GPU يمكنه القيام بذلك عتاديًّا.

copy إذا كان True يُنشئ نسخة عميقة على الكومة من الصورة التي حُوِّلت بدلًا من تحويل الصورة الأصلية في مكانها.

copy_to_fb إذا كان True تُحمَّل الصورة مباشرة إلى مخزن الإطارات. لـ copy_to_fb أولوية على copy. ليس لهذا أي تأثير خاص إذا كانت الصورة موجودة بالفعل في مخزن الإطارات.

quality يتحكم في جودة ضغط صورة jpeg. يمكن أن تكون القيمة بين 0 و 100.

يمكن أن يكون subsampling:

يعيد كائن الصورة حتى تتمكن من استدعاء طريقة أخرى باستخدام تدوين ..

to_png(x_scale: float = 1.0, y_scale: float = 1.0, roi: Tuple[int, int, int, int] | None = None, rgb_channel: int = -1, alpha: int = 255, color_palette: int | Image | None = None, alpha_palette: Image | None = None, hint: int = 0, transform: ndarray | None = None, copy: bool = False, copy_to_fb: bool = False) Image

يحوّل صورة إلى صورة PNG.

x_scale يتحكم في مقدار تحجيم الصورة المعروضة في اتجاه x (عائم). إذا كانت هذه القيمة سالبة ستُقلَب الصورة أفقيًّا. لاحظ أنه إذا لم يُحدَّد y_scale فسيطابق x_scale للحفاظ على نسبة العرض إلى الارتفاع.

y_scale يتحكم في مقدار تحجيم الصورة المعروضة في اتجاه y (عائم). إذا كانت هذه القيمة سالبة ستُقلَب الصورة رأسيًّا. لاحظ أنه إذا لم يُحدَّد x_scale فسيطابق x_scale للحفاظ على نسبة العرض إلى الارتفاع.

roi هو صف مستطيل منطقة الاهتمام (x, y, w, h) للصورة المصدر المراد رسمها. يتيح لك هذا استخراج البكسلات في منطقة الاهتمام فقط لتحجيمها ورسمها على الصورة الوجهة.

rgb_channel هو قناة RGB (0=R، G=1، B=2) المراد استخراجها من صورة RGB565 (إذا مُرِّرت) وعرضها على الصورة الوجهة. على سبيل المثال، إذا مرّرت rgb_channel=1 فسيستخرج هذا القناة الخضراء من صورة RGB565 المصدر ويرسمها بتدرج رمادي على الصورة الوجهة.

alpha يتحكم في مقدار مزج الصورة المصدر في الصورة الوجهة. القيمة 255 ترسم صورة مصدر معتمة بينما القيمة الأقل من 255 تنتج مزجًا بين الصورة المصدر والصورة الوجهة. القيمة 0 لا تؤدي إلى أي تعديل على الصورة الوجهة.

color_palette إذا لم يكن None يمكن أن يكون تعدادًا للوحة ألوان أو صورة RGB565 من 256 بكسل إجمالًا تُستخدم كجدول بحث للألوان على قيمة التدرج الرمادي لأي صورة مصدر. يُطبَّق هذا بعد استخراج rgb_channel إذا استُخدم.

alpha_palette إذا لم يكن None يمكن أن يكون صورة GRAYSCALE من 256 بكسل إجمالًا تُستخدم كلوحة ألفا تُعدِّل قيمة alpha للصورة المصدر المرسومة على مستوى البكسل مما يتيح لك التحكم بدقة في قيمة ألفا للبكسلات بناءً على قيمة تدرجها الرمادي. قيمة البكسل 255 في جدول بحث ألفا تكون معتمة بينما أي قيمة أقل من 255 تصبح أكثر شفافية حتى 0. يُطبَّق هذا بعد استخراج rgb_channel إذا استُخدم.

hint هو عملية OR منطقية للرايات المدرجة في رايات التلميح (باستثناء image.BLACK_BACKGROUND غير المدعوم هنا).

transform هو ndarray بحجم 3x3 يُستخدم لإجراء تحويل منظوري على الصورة. مدعوم فقط على OpenMV Cam N6 حاليًّا لأنه يحتوي على GPU يمكنه القيام بذلك عتاديًّا.

copy إذا كان True يُنشئ نسخة عميقة على الكومة من الصورة التي حُوِّلت بدلًا من تحويل الصورة الأصلية في مكانها.

copy_to_fb إذا كان True تُحمَّل الصورة مباشرة إلى مخزن الإطارات. لـ copy_to_fb أولوية على copy. ليس لهذا أي تأثير خاص إذا كانت الصورة موجودة بالفعل في مخزن الإطارات.

يعيد كائن الصورة حتى تتمكن من استدعاء طريقة أخرى باستخدام تدوين ..

compress(x_scale: float = 1.0, y_scale: float = 1.0, roi: Tuple[int, int, int, int] | None = None, rgb_channel: int = -1, alpha: int = 255, color_palette: int | Image | None = None, alpha_palette: Image | None = None, hint: int = 0, transform: ndarray | None = None, copy: bool = False, copy_to_fb: bool = False, quality: int = 90, subsampling: int = 0) Image

يحوّل صورة إلى صورة JPEG.

x_scale يتحكم في مقدار تحجيم الصورة المعروضة في اتجاه x (عائم). إذا كانت هذه القيمة سالبة ستُقلَب الصورة أفقيًّا. لاحظ أنه إذا لم يُحدَّد y_scale فسيطابق x_scale للحفاظ على نسبة العرض إلى الارتفاع.

y_scale يتحكم في مقدار تحجيم الصورة المعروضة في اتجاه y (عائم). إذا كانت هذه القيمة سالبة ستُقلَب الصورة رأسيًّا. لاحظ أنه إذا لم يُحدَّد x_scale فسيطابق x_scale للحفاظ على نسبة العرض إلى الارتفاع.

roi هو صف مستطيل منطقة الاهتمام (x, y, w, h) للصورة المصدر المراد رسمها. يتيح لك هذا استخراج البكسلات في منطقة الاهتمام فقط لتحجيمها ورسمها على الصورة الوجهة.

rgb_channel هو قناة RGB (0=R، G=1، B=2) المراد استخراجها من صورة RGB565 (إذا مُرِّرت) وعرضها على الصورة الوجهة. على سبيل المثال، إذا مرّرت rgb_channel=1 فسيستخرج هذا القناة الخضراء من صورة RGB565 المصدر ويرسمها بتدرج رمادي على الصورة الوجهة.

alpha يتحكم في مقدار مزج الصورة المصدر في الصورة الوجهة. القيمة 255 ترسم صورة مصدر معتمة بينما القيمة الأقل من 255 تنتج مزجًا بين الصورة المصدر والصورة الوجهة. القيمة 0 لا تؤدي إلى أي تعديل على الصورة الوجهة.

color_palette إذا لم يكن None يمكن أن يكون تعدادًا للوحة ألوان أو صورة RGB565 من 256 بكسل إجمالًا تُستخدم كجدول بحث للألوان على قيمة التدرج الرمادي لأي صورة مصدر. يُطبَّق هذا بعد استخراج rgb_channel إذا استُخدم.

alpha_palette إذا لم يكن None يمكن أن يكون صورة GRAYSCALE من 256 بكسل إجمالًا تُستخدم كلوحة ألفا تُعدِّل قيمة alpha للصورة المصدر المرسومة على مستوى البكسل مما يتيح لك التحكم بدقة في قيمة ألفا للبكسلات بناءً على قيمة تدرجها الرمادي. قيمة البكسل 255 في جدول بحث ألفا تكون معتمة بينما أي قيمة أقل من 255 تصبح أكثر شفافية حتى 0. يُطبَّق هذا بعد استخراج rgb_channel إذا استُخدم.

hint هو عملية OR منطقية للرايات المدرجة في رايات التلميح (باستثناء image.BLACK_BACKGROUND غير المدعوم هنا).

transform هو ndarray بحجم 3x3 يُستخدم لإجراء تحويل منظوري على الصورة. مدعوم فقط على OpenMV Cam N6 حاليًّا لأنه يحتوي على GPU يمكنه القيام بذلك عتاديًّا.

copy إذا كان True يُنشئ نسخة عميقة على الكومة من الصورة التي حُوِّلت بدلًا من تحويل الصورة الأصلية في مكانها.

copy_to_fb إذا كان True تُحمَّل الصورة مباشرة إلى مخزن الإطارات. لـ copy_to_fb أولوية على copy. ليس لهذا أي تأثير خاص إذا كانت الصورة موجودة بالفعل في مخزن الإطارات.

quality يتحكم في جودة ضغط صورة jpeg. يمكن أن تكون القيمة بين 0 و 100.

يمكن أن يكون subsampling:

يعيد كائن الصورة حتى تتمكن من استدعاء طريقة أخرى باستخدام تدوين ..

ملاحظة

Image.compress هو اسم بديل لـ Image.to_jpeg.

copy(x_scale: float = 1.0, y_scale: float = 1.0, roi: Tuple[int, int, int, int] | None = None, rgb_channel: int = -1, alpha: int = 255, color_palette: int | Image | None = None, alpha_palette: Image | None = None, hint: int = 0, transform: ndarray | None = None, copy_to_fb: bool = False) Image

يُنشئ نسخة عميقة من كائن الصورة.

x_scale يتحكم في مقدار تحجيم الصورة المعروضة في اتجاه x (عائم). إذا كانت هذه القيمة سالبة ستُقلَب الصورة أفقيًّا. لاحظ أنه إذا لم يُحدَّد y_scale فسيطابق x_scale للحفاظ على نسبة العرض إلى الارتفاع.

y_scale يتحكم في مقدار تحجيم الصورة المعروضة في اتجاه y (عائم). إذا كانت هذه القيمة سالبة ستُقلَب الصورة رأسيًّا. لاحظ أنه إذا لم يُحدَّد x_scale فسيطابق x_scale للحفاظ على نسبة العرض إلى الارتفاع.

roi هو صف مستطيل منطقة الاهتمام (x, y, w, h) للصورة المصدر المراد رسمها. يتيح لك هذا استخراج البكسلات في منطقة الاهتمام فقط لتحجيمها ورسمها على الصورة الوجهة.

rgb_channel هو قناة RGB (0=R، G=1، B=2) المراد استخراجها من صورة RGB565 (إذا مُرِّرت) وعرضها على الصورة الوجهة. على سبيل المثال، إذا مرّرت rgb_channel=1 فسيستخرج هذا القناة الخضراء من صورة RGB565 المصدر ويرسمها بتدرج رمادي على الصورة الوجهة.

alpha يتحكم في مقدار مزج الصورة المصدر في الصورة الوجهة. القيمة 255 ترسم صورة مصدر معتمة بينما القيمة الأقل من 255 تنتج مزجًا بين الصورة المصدر والصورة الوجهة. القيمة 0 لا تؤدي إلى أي تعديل على الصورة الوجهة.

color_palette إذا لم يكن None يمكن أن يكون تعدادًا للوحة ألوان أو صورة RGB565 من 256 بكسل إجمالًا تُستخدم كجدول بحث للألوان على قيمة التدرج الرمادي لأي صورة مصدر. يُطبَّق هذا بعد استخراج rgb_channel إذا استُخدم.

alpha_palette إذا لم يكن None يمكن أن يكون صورة GRAYSCALE من 256 بكسل إجمالًا تُستخدم كلوحة ألفا تُعدِّل قيمة alpha للصورة المصدر المرسومة على مستوى البكسل مما يتيح لك التحكم بدقة في قيمة ألفا للبكسلات بناءً على قيمة تدرجها الرمادي. قيمة البكسل 255 في جدول بحث ألفا تكون معتمة بينما أي قيمة أقل من 255 تصبح أكثر شفافية حتى 0. يُطبَّق هذا بعد استخراج rgb_channel إذا استُخدم.

hint هو عملية OR منطقية للرايات المدرجة في رايات التلميح (باستثناء image.BLACK_BACKGROUND غير المدعوم هنا).

transform هو ndarray بحجم 3x3 يُستخدم لإجراء تحويل منظوري على الصورة. مدعوم فقط على OpenMV Cam N6 حاليًّا لأنه يحتوي على GPU يمكنه القيام بذلك عتاديًّا.

copy_to_fb إذا كان True تُحمَّل الصورة مباشرة إلى مخزن الإطارات. ليس لهذا أي تأثير خاص إذا كانت الصورة موجودة بالفعل في مخزن الإطارات.

يعيد كائن الصورة حتى تتمكن من استدعاء طريقة أخرى باستخدام تدوين ..

crop(x_scale: float = 1.0, y_scale: float = 1.0, roi: Tuple[int, int, int, int] | None = None, rgb_channel: int = -1, alpha: int = 255, color_palette: int | Image | None = None, alpha_palette: Image | None = None, hint: int = 0, transform: ndarray | None = None, copy: bool = False, copy_to_fb: bool = False) Image

يعدّل صورة في مكانها دون تغيير نوع الصورة الأساسي.

x_scale يتحكم في مقدار تحجيم الصورة المعروضة في اتجاه x (عائم). إذا كانت هذه القيمة سالبة ستُقلَب الصورة أفقيًّا. لاحظ أنه إذا لم يُحدَّد y_scale فسيطابق x_scale للحفاظ على نسبة العرض إلى الارتفاع.

y_scale يتحكم في مقدار تحجيم الصورة المعروضة في اتجاه y (عائم). إذا كانت هذه القيمة سالبة ستُقلَب الصورة رأسيًّا. لاحظ أنه إذا لم يُحدَّد x_scale فسيطابق x_scale للحفاظ على نسبة العرض إلى الارتفاع.

roi هو صف مستطيل منطقة الاهتمام (x, y, w, h) للصورة المصدر المراد رسمها. يتيح لك هذا استخراج البكسلات في منطقة الاهتمام فقط لتحجيمها ورسمها على الصورة الوجهة.

rgb_channel هو قناة RGB (0=R، G=1، B=2) المراد استخراجها من صورة RGB565 (إذا مُرِّرت) وعرضها على الصورة الوجهة. على سبيل المثال، إذا مرّرت rgb_channel=1 فسيستخرج هذا القناة الخضراء من صورة RGB565 المصدر ويرسمها بتدرج رمادي على الصورة الوجهة.

alpha يتحكم في مقدار مزج الصورة المصدر في الصورة الوجهة. القيمة 255 ترسم صورة مصدر معتمة بينما القيمة الأقل من 255 تنتج مزجًا بين الصورة المصدر والصورة الوجهة. القيمة 0 لا تؤدي إلى أي تعديل على الصورة الوجهة.

color_palette إذا لم يكن None يمكن أن يكون تعدادًا للوحة ألوان أو صورة RGB565 من 256 بكسل إجمالًا تُستخدم كجدول بحث للألوان على قيمة التدرج الرمادي لأي صورة مصدر. يُطبَّق هذا بعد استخراج rgb_channel إذا استُخدم.

alpha_palette إذا لم يكن None يمكن أن يكون صورة GRAYSCALE من 256 بكسل إجمالًا تُستخدم كلوحة ألفا تُعدِّل قيمة alpha للصورة المصدر المرسومة على مستوى البكسل مما يتيح لك التحكم بدقة في قيمة ألفا للبكسلات بناءً على قيمة تدرجها الرمادي. قيمة البكسل 255 في جدول بحث ألفا تكون معتمة بينما أي قيمة أقل من 255 تصبح أكثر شفافية حتى 0. يُطبَّق هذا بعد استخراج rgb_channel إذا استُخدم.

hint هو عملية OR منطقية للرايات المدرجة في رايات التلميح (باستثناء image.BLACK_BACKGROUND غير المدعوم هنا).

transform هو ndarray بحجم 3x3 يُستخدم لإجراء تحويل منظوري على الصورة. مدعوم فقط على OpenMV Cam N6 حاليًّا لأنه يحتوي على GPU يمكنه القيام بذلك عتاديًّا.

copy إذا كان True يُنشئ نسخة عميقة على الكومة من الصورة التي حُوِّلت بدلًا من تحويل الصورة الأصلية في مكانها.

copy_to_fb إذا كان True تُحمَّل الصورة مباشرة إلى مخزن الإطارات. لـ copy_to_fb أولوية على copy. ليس لهذا أي تأثير خاص إذا كانت الصورة موجودة بالفعل في مخزن الإطارات.

يعيد كائن الصورة حتى تتمكن من استدعاء طريقة أخرى باستخدام تدوين ..

scale(x_scale: float = 1.0, y_scale: float = 1.0, roi: Tuple[int, int, int, int] | None = None, rgb_channel: int = -1, alpha: int = 255, color_palette: int | Image | None = None, alpha_palette: Image | None = None, hint: int = 0, transform: ndarray | None = None, copy: bool = False, copy_to_fb: bool = False) Image

يعدّل صورة في مكانها دون تغيير نوع الصورة الأساسي.

x_scale يتحكم في مقدار تحجيم الصورة المعروضة في اتجاه x (عائم). إذا كانت هذه القيمة سالبة ستُقلَب الصورة أفقيًّا. لاحظ أنه إذا لم يُحدَّد y_scale فسيطابق x_scale للحفاظ على نسبة العرض إلى الارتفاع.

y_scale يتحكم في مقدار تحجيم الصورة المعروضة في اتجاه y (عائم). إذا كانت هذه القيمة سالبة ستُقلَب الصورة رأسيًّا. لاحظ أنه إذا لم يُحدَّد x_scale فسيطابق x_scale للحفاظ على نسبة العرض إلى الارتفاع.

roi هو صف مستطيل منطقة الاهتمام (x, y, w, h) للصورة المصدر المراد رسمها. يتيح لك هذا استخراج البكسلات في منطقة الاهتمام فقط لتحجيمها ورسمها على الصورة الوجهة.

rgb_channel هو قناة RGB (0=R، G=1، B=2) المراد استخراجها من صورة RGB565 (إذا مُرِّرت) وعرضها على الصورة الوجهة. على سبيل المثال، إذا مرّرت rgb_channel=1 فسيستخرج هذا القناة الخضراء من صورة RGB565 المصدر ويرسمها بتدرج رمادي على الصورة الوجهة.

alpha يتحكم في مقدار مزج الصورة المصدر في الصورة الوجهة. القيمة 255 ترسم صورة مصدر معتمة بينما القيمة الأقل من 255 تنتج مزجًا بين الصورة المصدر والصورة الوجهة. القيمة 0 لا تؤدي إلى أي تعديل على الصورة الوجهة.

color_palette إذا لم يكن None يمكن أن يكون تعدادًا للوحة ألوان أو صورة RGB565 من 256 بكسل إجمالًا تُستخدم كجدول بحث للألوان على قيمة التدرج الرمادي لأي صورة مصدر. يُطبَّق هذا بعد استخراج rgb_channel إذا استُخدم.

alpha_palette إذا لم يكن None يمكن أن يكون صورة GRAYSCALE من 256 بكسل إجمالًا تُستخدم كلوحة ألفا تُعدِّل قيمة alpha للصورة المصدر المرسومة على مستوى البكسل مما يتيح لك التحكم بدقة في قيمة ألفا للبكسلات بناءً على قيمة تدرجها الرمادي. قيمة البكسل 255 في جدول بحث ألفا تكون معتمة بينما أي قيمة أقل من 255 تصبح أكثر شفافية حتى 0. يُطبَّق هذا بعد استخراج rgb_channel إذا استُخدم.

hint هو عملية OR منطقية للرايات المدرجة في رايات التلميح (باستثناء image.BLACK_BACKGROUND غير المدعوم هنا).

transform هو ndarray بحجم 3x3 يُستخدم لإجراء تحويل منظوري على الصورة. مدعوم فقط على OpenMV Cam N6 حاليًّا لأنه يحتوي على GPU يمكنه القيام بذلك عتاديًّا.

copy إذا كان True يُنشئ نسخة عميقة على الكومة من الصورة التي حُوِّلت بدلًا من تحويل الصورة الأصلية في مكانها.

copy_to_fb إذا كان True تُحمَّل الصورة مباشرة إلى مخزن الإطارات. لـ copy_to_fb أولوية على copy. ليس لهذا أي تأثير خاص إذا كانت الصورة موجودة بالفعل في مخزن الإطارات.

يعيد كائن الصورة حتى تتمكن من استدعاء طريقة أخرى باستخدام تدوين ..

ملاحظة

Image.scale هو اسم بديل لـ Image.crop.

save(path: str, roi: Tuple[int, int, int, int] | None = None, quality: int = 50) Image

يحفظ نسخة من الصورة في نظام الملفات عند path.

يدعم ملفات الصور bmp/pgm/ppm/jpg/jpeg. لاحظ أنه لا يمكنك حفظ صور jpeg المضغوطة بتنسيق غير مضغوط.

roi هو مستطيل منطقة الاهتمام (x, y, w, h) المراد الحفظ منه. إذا لم يُحدَّد فهو يساوي مستطيل الصورة الذي ينسخ الصورة بأكملها. هذا الوسيط غير قابل للتطبيق على صور JPEG.

quality هي جودة ضغط jpeg المستخدمة لحفظ الصورة بتنسيق jpeg إذا لم تكن الصورة مضغوطة بالفعل (0-100) (int).

يعيد كائن الصورة حتى تتمكن من استدعاء طريقة أخرى باستخدام تدوين ..

flush() None

يحدّث مخزن الإطارات في الـ IDE بالصورة الموجودة في مخزن الإطارات على الكاميرا.

طرق الرسم

clear(mask: Image | None = None) Image

يضبط جميع البكسلات في الصورة على الصفر (سريع جدًّا).

mask هو صورة أخرى تُستخدم كقناع على مستوى البكسل للعملية. يجب أن يكون القناع صورة ببكسلات سوداء أو بيضاء فقط ويجب أن يكون بنفس حجم الصورة المُشغَّل عليها. تُعدَّل فقط البكسلات المضبوطة في القناع.

يعيد كائن الصورة حتى تتمكن من استدعاء طريقة أخرى باستخدام تدوين ..

غير مدعوم على الصور المضغوطة.

draw_line(x0: int, y0: int, x1: int, y1: int, color: int | Tuple[int, int, int] | None = None, thickness: int = 1) Image

يرسم خطًّا من (x0, y0) إلى (x1, y1) على الصورة. يمكنك تمرير x0, y0, x1, y1 منفصلة أو كصف (x0, y0, x1, y1).

color هو صف RGB888 لصور Grayscale أو RGB565. الافتراضي أبيض. غير أنه يمكنك أيضًا تمرير قيمة البكسل الأساسية (0-255) لصور التدرج الرمادي أو قيمة RGB565 لصور RGB565.

thickness يتحكم في سُمك الخط بالبكسلات.

يعيد كائن الصورة حتى تتمكن من استدعاء طريقة أخرى باستخدام تدوين ..

غير مدعوم على الصور المضغوطة أو صور bayer.

draw_rectangle(x: int, y: int, w: int, h: int, color: int | Tuple[int, int, int] | None = None, thickness: int = 1, fill: bool = False) Image

يرسم مستطيلًا على الصورة. يمكنك تمرير x, y, w, h منفصلة أو كصف (x, y, w, h).

color هو صف RGB888 لصور Grayscale أو RGB565. الافتراضي أبيض. غير أنه يمكنك أيضًا تمرير قيمة البكسل الأساسية (0-255) لصور التدرج الرمادي أو قيمة RGB565 لصور RGB565.

thickness يتحكم في سُمك الخطوط بالبكسلات.

مرّر fill مضبوطًا على True لملء المستطيل.

يعيد كائن الصورة حتى تتمكن من استدعاء طريقة أخرى باستخدام تدوين ..

غير مدعوم على الصور المضغوطة أو صور bayer.

draw_circle(x: int, y: int, radius: int, color: int | Tuple[int, int, int] | None = None, thickness: int = 1, fill: bool = False) Image

يرسم دائرة على الصورة. يمكنك تمرير x, y, radius منفصلة أو كصف (x, y, radius).

color هو صف RGB888 لصور Grayscale أو RGB565. الافتراضي أبيض. غير أنه يمكنك أيضًا تمرير قيمة البكسل الأساسية (0-255) لصور التدرج الرمادي أو قيمة RGB565 لصور RGB565.

thickness يتحكم في سُمك الحواف بالبكسلات.

مرّر fill مضبوطًا على True لملء الدائرة.

يعيد كائن الصورة حتى تتمكن من استدعاء طريقة أخرى باستخدام تدوين ..

غير مدعوم على الصور المضغوطة أو صور bayer.

draw_ellipse(cx: int, cy: int, rx: int, ry: int, rotation: int, color: int | Tuple[int, int, int] | None = None, thickness: int = 1, fill: bool = False) Image

يرسم قطعًا ناقصًا على الصورة. يمكنك تمرير cx, cy, rx, ry والتدوير (بالدرجات) منفصلة أو كصف (cx, yc, rx, ry, rotation).

color هو صف RGB888 لصور Grayscale أو RGB565. الافتراضي أبيض. غير أنه يمكنك أيضًا تمرير قيمة البكسل الأساسية (0-255) لصور التدرج الرمادي أو قيمة RGB565 لصور RGB565.

thickness يتحكم في سُمك الحواف بالبكسلات.

مرّر fill مضبوطًا على True لملء القطع الناقص.

يعيد كائن الصورة حتى تتمكن من استدعاء طريقة أخرى باستخدام تدوين ..

غير مدعوم على الصور المضغوطة أو صور bayer.

draw_string(x: int, y: int, text: str, color: int | Tuple[int, int, int] | None = None, scale: float = 1, x_spacing: int = 0, y_spacing: int = 0, mono_space: bool = True, char_rotation: int = 0, char_hmirror: bool = False, char_vflip: bool = False, string_rotation: int = 0, string_hmirror: bool = False, string_vflip: bool = False) Image

يرسم نصًّا بحجم 8x10 بدءًا من الموقع (x, y) في الصورة. يمكنك تمرير x, y منفصلة أو كصف (x, y).

text سلسلة نصية تُكتب على الصورة. نهايات الأسطر \n و \r و \r\n تنقل المؤشر إلى السطر التالي.

color هو صف RGB888 لصور Grayscale أو RGB565. الافتراضي أبيض. غير أنه يمكنك أيضًا تمرير قيمة البكسل الأساسية (0-255) لصور التدرج الرمادي أو قيمة RGB565 لصور RGB565.

scale يمكن زيادته لزيادة/إنقاص حجم النص على الصورة. يمكنك تمرير قيم صحيحة أكبر من 0 أو قيم عائمة.

x_spacing يتيح لك إضافة (إذا كان موجبًا) أو طرح (إذا كان سالبًا) بكسلات x بين الأحرف.

y_spacing يتيح لك إضافة (إذا كان موجبًا) أو طرح (إذا كان سالبًا) بكسلات y بين الأحرف (للنص متعدد الأسطر).

mono_space الافتراضي True مما يجبر النص على أن يكون ثابت التباعد. لمقاييس النص الكبيرة يبدو هذا فظيعًا. اضبطه على False للحصول على تباعد أحرف غير ثابت العرض يبدو أفضل بكثير.

char_rotation يمكن أن يكون 0 أو 90 أو 180 أو 270 لتدوير كل حرف في السلسلة بهذا المقدار.

char_hmirror إذا كان True يعكس جميع الأحرف في السلسلة أفقيًّا.

char_vflip إذا كان True يقلب جميع الأحرف في السلسلة رأسيًّا.

string_rotation يمكن أن يكون 0 أو 90 أو 180 أو 270 لتدوير السلسلة بهذا المقدار.

string_hmirror إذا كان True يعكس السلسلة أفقيًّا.

string_vflip إذا كان True يقلب السلسلة رأسيًّا.

يعيد كائن الصورة حتى تتمكن من استدعاء طريقة أخرى باستخدام تدوين ..

غير مدعوم على الصور المضغوطة أو صور bayer.

draw_cross(x: int, y: int, color: int | Tuple[int, int, int] | None = None, size: int = 5, thickness: int = 1) Image

يرسم صليبًا عند الموقع x, y. يمكنك تمرير x, y منفصلة أو كصف (x, y).

color هو صف RGB888 لصور Grayscale أو RGB565. الافتراضي أبيض. غير أنه يمكنك أيضًا تمرير قيمة البكسل الأساسية (0-255) لصور التدرج الرمادي أو قيمة RGB565 لصور RGB565.

size يتحكم في طول امتداد خطوط الصليب.

thickness يتحكم في سُمك الحواف بالبكسلات.

يعيد كائن الصورة حتى تتمكن من استدعاء طريقة أخرى باستخدام تدوين ..

غير مدعوم على الصور المضغوطة أو صور bayer.

draw_arrow(x0: int, y0: int, x1: int, y1: int, color: int | Tuple[int, int, int] | None = None, thickness: int = 1) Image

يرسم سهمًا من (x0, y0) إلى (x1, y1) على الصورة. يمكنك تمرير x0, y0, x1, y1 منفصلة أو كصف (x0, y0, x1, y1).

color هو صف RGB888 لصور Grayscale أو RGB565. الافتراضي أبيض. غير أنه يمكنك أيضًا تمرير قيمة البكسل الأساسية (0-255) لصور التدرج الرمادي أو قيمة RGB565 لصور RGB565.

thickness يتحكم في سُمك الخط بالبكسلات.

يعيد كائن الصورة حتى تتمكن من استدعاء طريقة أخرى باستخدام تدوين ..

غير مدعوم على الصور المضغوطة أو صور bayer.

draw_detection(detection: Tuple[int, int, int, int, int, int], color1: int | Tuple[int, int, int] | None = None, color2: int | Tuple[int, int, int] | None = None, size: int = 5, thickness: int = 1, fill: bool = False, label: str | None = None, label_offset: Tuple[int, int] | None = None) Image

يرسم نتيجة كشف على الصورة. detection هو صف سداسي (rx, ry, rw, rh, cx, cy) يصف مستطيل إحاطة ومركزًا (يُعاد عادةً بواسطة كود الشبكة العصبية أو تتبع الألوان).

color1 هو لون المستطيل و color2 هو لون صليب المركز. size هو حجم صليب المركز، و thickness يتحكم في عرض الحد، و fill يملأ المستطيل.

label إذا قُدِّم يُرسم بالقرب من المستطيل، مزاحًا بمقدار label_offset (x, y).

يعيد كائن الصورة حتى تتمكن من استدعاء طريقة أخرى باستخدام تدوين ..

غير مدعوم على الصور المضغوطة أو صور bayer.

draw_edges(corners: List[Tuple[int, int]], color: int | Tuple[int, int, int] | None = None, size: int = 0, thickness: int = 1, fill: bool = False) Image

يرسم حواف خطوط بين قائمة أركان تعيدها طرق مثل blob.corners. الأركان هي صف من أربع قيم من صفوف x/y من قيمتين. مثل [(x1,y1),(x2,y2),(x3,y3),(x4,y4)].

color هو صف RGB888 لصور Grayscale أو RGB565. الافتراضي أبيض. غير أنه يمكنك أيضًا تمرير قيمة البكسل الأساسية (0-255) لصور التدرج الرمادي أو قيمة RGB565 لصور RGB565.

size إذا كان أكبر من 0 يجعل الأركان تُرسم كدوائر بنصف قطر size.

thickness يتحكم في سُمك الخط بالبكسلات.

مرّر fill مضبوطًا على True لملء دوائر الأركان إذا رُسمت.

يعيد كائن الصورة حتى تتمكن من استدعاء طريقة أخرى باستخدام تدوين ..

غير مدعوم على الصور المضغوطة أو صور bayer.

draw_image(image: Image, x: int = 0, y: int = 0, x_scale: float = 1.0, y_scale: float = 1.0, roi: Tuple[int, int, int, int] | None = None, rgb_channel: int = -1, alpha: int = 255, color_palette: int | Image | None = None, alpha_palette: Image | None = None, hint: int = 0, transform: ndarray | None = None, mask: Image | None = None) Image

يرسم image تبدأ زاويتها العلوية اليسرى عند الموقع x, y. يمكنك تمرير x, y منفصلة أو كصف (x, y). تتولى هذه الطريقة تلقائيًّا عرض الصورة المُمرَّرة بتنسيق البكسل الصحيح للصورة الوجهة مع التعامل أيضًا مع الاقتصاص بسلاسة.

يمكنك أيضًا تمرير مسار بدلًا من كائن صورة لهذه الطريقة لتحميل الصورة من القرص تلقائيًّا واستخدامها في خطوة واحدة. مثل draw_image("test.jpg").

x_scale يتحكم في مقدار تحجيم الصورة المعروضة في اتجاه x (عائم). إذا كانت هذه القيمة سالبة ستُقلَب الصورة أفقيًّا. لاحظ أنه إذا لم يُحدَّد y_scale فسيطابق x_scale للحفاظ على نسبة العرض إلى الارتفاع.

y_scale يتحكم في مقدار تحجيم الصورة المعروضة في اتجاه y (عائم). إذا كانت هذه القيمة سالبة ستُقلَب الصورة رأسيًّا. لاحظ أنه إذا لم يُحدَّد x_scale فسيطابق x_scale للحفاظ على نسبة العرض إلى الارتفاع.

roi هو صف مستطيل منطقة الاهتمام (x, y, w, h) للصورة المصدر المراد رسمها. يتيح لك هذا استخراج البكسلات في منطقة الاهتمام فقط لتحجيمها ورسمها على الصورة الوجهة.

rgb_channel هو قناة RGB (0=R، G=1، B=2) المراد استخراجها من صورة RGB565 (إذا مُرِّرت) وعرضها على الصورة الوجهة. على سبيل المثال، إذا مرّرت rgb_channel=1 فسيستخرج هذا القناة الخضراء من صورة RGB565 المصدر ويرسمها بتدرج رمادي على الصورة الوجهة.

alpha يتحكم في مقدار مزج الصورة المصدر في الصورة الوجهة. القيمة 255 ترسم صورة مصدر معتمة بينما القيمة الأقل من 255 تنتج مزجًا بين الصورة المصدر والصورة الوجهة. القيمة 0 لا تؤدي إلى أي تعديل على الصورة الوجهة.

color_palette إذا لم يكن None يمكن أن يكون تعدادًا للوحة ألوان أو صورة RGB565 من 256 بكسل إجمالًا تُستخدم كجدول بحث للألوان على قيمة التدرج الرمادي لأي صورة مصدر. يُطبَّق هذا بعد استخراج rgb_channel إذا استُخدم.

alpha_palette إذا لم يكن None يمكن أن يكون صورة GRAYSCALE من 256 بكسل إجمالًا تُستخدم كلوحة ألفا تُعدِّل قيمة alpha للصورة المصدر المرسومة على مستوى البكسل مما يتيح لك التحكم بدقة في قيمة ألفا للبكسلات بناءً على قيمة تدرجها الرمادي. قيمة البكسل 255 في جدول بحث ألفا تكون معتمة بينما أي قيمة أقل من 255 تصبح أكثر شفافية حتى 0. يُطبَّق هذا بعد استخراج rgb_channel إذا استُخدم.

hint هو عملية OR منطقية للرايات المدرجة في رايات التلميح (بما في ذلك image.BLACK_BACKGROUND المدعوم هنا).

transform هو ndarray بحجم 3x3 يُستخدم لإجراء تحويل منظوري على الصورة. مدعوم فقط على OpenMV Cam N6 حاليًّا لأنه يحتوي على GPU يمكنه القيام بذلك عتاديًّا.

يعيد كائن الصورة حتى تتمكن من استدعاء طريقة أخرى باستخدام تدوين ..

draw_keypoints(keypoints: kp_desc | List[Tuple[int, int, int]], color: int | Tuple[int, int, int] | None = None, size: int = 10, thickness: int = 1, fill: bool = False) Image

يرسم النقاط المفتاحية لكائن نقاط مفتاحية على الصورة. يمكنك أيضًا تمرير قائمة من صفوف من ثلاث قيم تحتوي على (x, y, rotation_angle_in_degrees) لإعادة استخدام هذه الطريقة لرسم رموز نقاط مفتاحية وهي دائرة بها خط يشير في اتجاه معين.

color هو صف RGB888 لصور Grayscale أو RGB565. الافتراضي أبيض. غير أنه يمكنك أيضًا تمرير قيمة البكسل الأساسية (0-255) لصور التدرج الرمادي أو قيمة RGB565 لصور RGB565.

size يتحكم في حجم النقاط المفتاحية.

thickness يتحكم في سُمك الخط بالبكسلات.

مرّر fill مضبوطًا على True لملء النقاط المفتاحية.

يعيد كائن الصورة حتى تتمكن من استدعاء طريقة أخرى باستخدام تدوين ..

غير مدعوم على الصور المضغوطة أو صور bayer.

flood_fill(x: int, y: int, seed_threshold: float = 0.05, floating_threshold: float = 0.05, color: int | Tuple[int, int, int] | None = None, invert: bool = False, clear_background: bool = False, mask: Image | None = None) Image

يملأ منطقة من الصورة بالفيض بدءًا من الموقع x, y. يمكنك تمرير x, y منفصلة أو كصف (x, y).

seed_threshold يتحكم في مدى اختلاف أي بكسل في منطقة الملء عن بكسل البداية الأصلي.

floating_threshold يتحكم في مدى اختلاف أي بكسل في منطقة الملء عن أي بكسلات مجاورة.

color هو صف RGB888 لصور Grayscale أو RGB565. الافتراضي أبيض. غير أنه يمكنك أيضًا تمرير قيمة البكسل الأساسية (0-255) لصور التدرج الرمادي أو قيمة RGB565 لصور RGB565.

مرّر invert بقيمة True لإعادة تلوين كل شيء خارج المنطقة المتصلة لملء الفيض.

مرّر clear_background بقيمة True لتصفير بقية البكسلات التي لم يُعد ملء الفيض تلوينها.

mask هو صورة أخرى تُستخدم كقناع على مستوى البكسل للعملية. يجب أن يكون القناع صورة ببكسلات سوداء أو بيضاء فقط ويجب أن يكون بنفس حجم الصورة المُشغَّل عليها. تُقيَّم فقط البكسلات المضبوطة في القناع عند ملء الفيض.

يعيد كائن الصورة حتى تتمكن من استدعاء طريقة أخرى باستخدام تدوين ..

غير مدعوم على الصور المضغوطة أو صور bayer.

هذه الطريقة غير متاحة على OpenMV Cam M4.

draw_event_histogram(array: ndarray, clear: bool = True, brightness: int = 128, contrast: int = 16) Image

يحوّل ndarray للأحداث (كما يُملأ بواسطة csi.IOCTL_GENX320_READ_EVENTS) إلى نقاط على Image لأغراض التصور. يجب أن يكون مخزن الصورة صورة GRAYSCALE بحجم 320x320.

لكل صف csi.PIX_ON_EVENT يُضاف +contrast إلى بكسل الحدث؛ ولكل صف csi.PIX_OFF_EVENT يُطرح -contrast من البكسل. تُتجاهَل أحداث التشغيل. تُقصَر قيم البكسل على 0-255.

clear إذا كان True يعيد ضبط مخزن الصورة إلى brightness قبل الرسم --- كل إطار يصبح عرضًا جديدًا للأحداث فقط. اضبطه على False لتراكم الأحداث عبر استدعاءات متعددة (مفيد لمسارات الحركة طويلة التعريض).

brightness يتحكم في خط الأساس الرمادي المتوسط الذي يُعاد ضبط المخزن إليه عندما يكون clear بقيمة True. الافتراضي 128 يضع أحداث ON عند الطرف الفاتح وأحداث OFF عند الطرف الداكن بمجال متساوٍ.

contrast يتحكم في مقدار إزاحة كل حدث لبكسله --- القيم الأعلى تجعل الأحداث تبرز، على حساب التشبع السريع عند هبوط العديد من الأحداث على نفس البكسل.

طرق الإقناع

mask_rectangle(x: int, y: int, w: int, h: int) Image

يصفّر جزءًا مستطيلًا من الصورة. إذا لم تُقدَّم أي وسائط فإن هذه الطريقة تصفّر مركز الصورة.

يعيد كائن الصورة حتى تتمكن من استدعاء طريقة أخرى باستخدام تدوين ..

غير مدعوم على الصور المضغوطة أو صور bayer.

mask_circle(x: int, y: int, radius: int) Image

يصفّر جزءًا دائريًّا من الصورة. إذا لم تُقدَّم أي وسائط فإن هذه الطريقة تصفّر مركز الصورة.

يعيد كائن الصورة حتى تتمكن من استدعاء طريقة أخرى باستخدام تدوين ..

غير مدعوم على الصور المضغوطة أو صور bayer.

mask_ellipse(x: int, y: int, radius_x: int, radius_y: int, rotation_angle_in_degrees: int) Image

يصفّر جزءًا على شكل قطع ناقص من الصورة. إذا لم تُقدَّم أي وسائط فإن هذه الطريقة تصفّر مركز الصورة.

يعيد كائن الصورة حتى تتمكن من استدعاء طريقة أخرى باستخدام تدوين ..

غير مدعوم على الصور المضغوطة أو صور bayer.

الطرق الثنائية

binary(thresholds: List[Tuple[int, int]], invert: bool = False, zero: bool = False, mask: Image | None = None, to_bitmap: bool = False, copy: bool = False) Image

يضبط جميع البكسلات في الصورة على الأسود أو الأبيض بحسب ما إذا كان كل بكسل داخل أحد صفوف العتبة في thresholds.

thresholds هي قائمة من صفوف (lo, hi) لصور التدرج الرمادي، أو صفوف (l_lo, l_hi, a_lo, a_hi, b_lo, b_hi) لصور RGB565. تُصحَّح قيم min/max المتبادلة تلقائيًّا؛ والمكونات المفقودة تأخذ افتراضيًّا المدى الأقصى.

invert يعكس مطابقة العتبة.

zero إذا كان True يصفّر البكسلات التي اجتازت العتبة ويترك البقية دون مساس.

mask هو صورة ثنائية تُستخدم كقناع على مستوى البكسل؛ تُعدَّل فقط البكسلات المضبوطة في القناع.

to_bitmap إذا كان True يحوّل بيانات الصورة إلى خريطة بت بمعدل بت واحد لكل بكسل. للصور الصغيرة جدًّا قد يتطلب هذا copy=True.

copy إذا كان True يعيد صورة جديدة على الكومة بدلًا من تعديل الصورة المصدر.

يعيد كائن الصورة حتى تتمكن من استدعاء طريقة أخرى باستخدام تدوين ..

غير مدعوم على الصور المضغوطة أو صور bayer.

invert() Image

يعكس جميع قيم البكسل في الصورة (يصبح كل بكسل 255 - pixel للقنوات 8 بت).

يعيد كائن الصورة حتى تتمكن من استدعاء طريقة أخرى باستخدام تدوين ..

غير مدعوم على الصور المضغوطة أو صور bayer/yuv.

b_and(image: Image, mask: Image | None = None) Image

يجري عملية AND منطقية بين هذه الصورة وصورة أخرى.

يمكن أن يكون image كائن صورة، أو مسارًا إلى ملف صورة غير مضغوط (bmp/pgm/ppm)، أو قيمة قياسية (صف RGB888 أو قيمة البكسل الأساسية).

mask هو صورة ثنائية تُستخدم كقناع على مستوى البكسل؛ تُعدَّل فقط البكسلات المضبوطة في القناع.

يعيد كائن الصورة حتى تتمكن من استدعاء طريقة أخرى باستخدام تدوين ..

غير مدعوم على الصور المضغوطة أو صور bayer.

b_nand(image: Image, mask: Image | None = None) Image

يجري عملية NAND منطقية بين هذه الصورة وصورة أخرى.

يمكن أن يكون image كائن صورة، أو مسارًا إلى ملف صورة غير مضغوط (bmp/pgm/ppm)، أو قيمة قياسية (صف RGB888 أو قيمة البكسل الأساسية).

mask هو صورة ثنائية تُستخدم كقناع على مستوى البكسل؛ تُعدَّل فقط البكسلات المضبوطة في القناع.

يعيد كائن الصورة حتى تتمكن من استدعاء طريقة أخرى باستخدام تدوين ..

غير مدعوم على الصور المضغوطة أو صور bayer.

b_or(image: Image, mask: Image | None = None) Image

يجري عملية OR منطقية بين هذه الصورة وصورة أخرى.

يمكن أن يكون image كائن صورة، أو مسارًا إلى ملف صورة غير مضغوط (bmp/pgm/ppm)، أو قيمة قياسية (صف RGB888 أو قيمة البكسل الأساسية).

mask هو صورة ثنائية تُستخدم كقناع على مستوى البكسل؛ تُعدَّل فقط البكسلات المضبوطة في القناع.

يعيد كائن الصورة حتى تتمكن من استدعاء طريقة أخرى باستخدام تدوين ..

غير مدعوم على الصور المضغوطة أو صور bayer.

b_nor(image: Image, mask: Image | None = None) Image

يجري عملية NOR منطقية بين هذه الصورة وصورة أخرى.

يمكن أن يكون image كائن صورة، أو مسارًا إلى ملف صورة غير مضغوط (bmp/pgm/ppm)، أو قيمة قياسية (صف RGB888 أو قيمة البكسل الأساسية).

mask هو صورة ثنائية تُستخدم كقناع على مستوى البكسل؛ تُعدَّل فقط البكسلات المضبوطة في القناع.

يعيد كائن الصورة حتى تتمكن من استدعاء طريقة أخرى باستخدام تدوين ..

غير مدعوم على الصور المضغوطة أو صور bayer.

b_xor(image: Image, mask: Image | None = None) Image

يجري عملية XOR منطقية بين هذه الصورة وصورة أخرى.

يمكن أن يكون image كائن صورة، أو مسارًا إلى ملف صورة غير مضغوط (bmp/pgm/ppm)، أو قيمة قياسية (صف RGB888 أو قيمة البكسل الأساسية).

mask هو صورة ثنائية تُستخدم كقناع على مستوى البكسل؛ تُعدَّل فقط البكسلات المضبوطة في القناع.

يعيد كائن الصورة حتى تتمكن من استدعاء طريقة أخرى باستخدام تدوين ..

غير مدعوم على الصور المضغوطة أو صور bayer.

b_xnor(image: Image, mask: Image | None = None) Image

يجري عملية XNOR منطقية بين هذه الصورة وصورة أخرى.

يمكن أن يكون image كائن صورة، أو مسارًا إلى ملف صورة غير مضغوط (bmp/pgm/ppm)، أو قيمة قياسية (صف RGB888 أو قيمة البكسل الأساسية).

mask هو صورة ثنائية تُستخدم كقناع على مستوى البكسل؛ تُعدَّل فقط البكسلات المضبوطة في القناع.

يعيد كائن الصورة حتى تتمكن من استدعاء طريقة أخرى باستخدام تدوين ..

غير مدعوم على الصور المضغوطة أو صور bayer.

طرق ISP

awb(max: bool = False) Image

يجري موازنة بيضاء تلقائية على الصورة باستخدام خوارزمية العالم الرمادي. يعمل على صور RAW Bayer أو RGB565. ليس له تأثير على الصور الثنائية/التدرج الرمادي.

max إذا كان True يستخدم خوارزمية الرقعة البيضاء بدلًا من ذلك.

يعيد كائن الصورة حتى تتمكن من استدعاء طريقة أخرى باستخدام تدوين ..

غير مدعوم على الصور المضغوطة أو صور yuv.

ccm(matrix: List[List[float]]) Image

يضرب مصفوفة تصحيح اللون العائمة المُمرَّرة بالصورة. يمكن أن تكون المصفوفات 3x3 أو 3x4 (مع عمود الإزاحة)، بصيغة قائمة متداخلة أو قائمة مسطحة:

[[rr, rg, rb], [gr, gg, gb], [br, bg, bb]]
[[rr, rg, rb, ro], [gr, gg, gb, go], [br, bg, bb, bo]]
[rr, rg, rb, ro, gr, gg, gb, go, br, bg, bb, bo]

يعيد كائن الصورة حتى تتمكن من استدعاء طريقة أخرى باستخدام تدوين ..

غير مدعوم على الصور المضغوطة أو صور bayer/yuv.

gamma(gamma: float = 1.0, contrast: float = 1.0, brightness: float = 0.0) Image

يضبط جاما الصورة والتباين والسطوع.

gamma يطبّق pow(pixel, 1/gamma) بعد التطبيع. القيم الأكبر من 1.0 تُفتّح؛ والأقل من 1.0 تُعتّم.

contrast يطبّق pixel * contrast بعد التطبيع.

brightness يطبّق pixel + brightness بعد التطبيع.

يعيد كائن الصورة حتى تتمكن من استدعاء طريقة أخرى باستخدام تدوين ..

غير مدعوم على الصور المضغوطة أو صور bayer/yuv.

gamma_corr(gamma: float = 1.0, contrast: float = 1.0, brightness: float = 0.0) Image

اسم بديل لـ Image.gamma.

الطرق الحسابية

negate() Image

اسم بديل لـ Image.invert.

replace(image: Image | None = None, **kwargs) Image

اسم بديل لـ Image.draw_image(). يستبدل هذه الصورة بـ image (أو يحوّل هذه الصورة في مكانها إذا أُغفل image) باستخدام وسائط draw_image المفتاحية القياسية. الوسيط transform هو ndarray بحجم 3x3 يصف تحويلًا منظوريًّا (مدعوم فقط على كاميرات OpenMV التي يكون فيها ULAB مفعّلًا).

assign(image: Image | None = None, **kwargs) Image

اسم بديل لـ Image.replace().

set(image: Image | None = None, **kwargs) Image

اسم بديل لـ Image.replace().

add(image: Image, mask: Image | None = None) Image

يضيف صورة بكسلًا بكسلًا إلى هذه الصورة.

يمكن أن يكون image كائن صورة، أو مسارًا إلى ملف صورة غير مضغوط (bmp/pgm/ppm)، أو قيمة قياسية (صف RGB888 أو قيمة البكسل الأساسية).

mask هو صورة ثنائية تُستخدم كقناع على مستوى البكسل؛ تُعدَّل فقط البكسلات المضبوطة في القناع.

يعيد كائن الصورة حتى تتمكن من استدعاء طريقة أخرى باستخدام تدوين ..

غير مدعوم على الصور المضغوطة أو صور bayer.

sub(image: Image, mask: Image | None = None) Image

يطرح image بكسلًا بكسلًا من هذه الصورة (self - image).

يمكن أن يكون image إما كائن صورة، أو مسارًا إلى ملف صورة غير مضغوط (bmp/pgm/ppm)، أو قيمة قياسية (صف RGB888 أو قيمة البكسل الأساسية).

mask هو صورة ثنائية تُستخدم كقناع على مستوى البكسل؛ تُعدَّل فقط البكسلات المضبوطة في القناع.

تقبل هذه الطريقة أيضًا المجموعة الكاملة من وسائط Image.draw_image() المفتاحية (x و y و x_scale و y_scale و roi و rgb_channel و alpha و color_palette و alpha_palette و hint و transform).

غير مدعوم على الصور المضغوطة أو صور bayer.

rsub(image: Image, mask: Image | None = None) Image

الطرح العكسي: يستبدل هذه الصورة بـ image - self بكسلًا بكسلًا. وفيما عدا ذلك مطابق لـ Image.sub().

min(image: Image, mask: Image | None = None) Image

يعيد الصورة الدنيا لصورتين بكسلًا بكسلًا.

يمكن أن يكون image كائن صورة، أو مسارًا إلى ملف صورة غير مضغوط (bmp/pgm/ppm)، أو قيمة قياسية (صف RGB888 أو قيمة البكسل الأساسية).

mask هو صورة ثنائية تُستخدم كقناع على مستوى البكسل؛ تُعدَّل فقط البكسلات المضبوطة في القناع.

يعيد كائن الصورة حتى تتمكن من استدعاء طريقة أخرى باستخدام تدوين ..

غير مدعوم على الصور المضغوطة أو صور bayer.

max(image: Image, mask: Image | None = None) Image

يعيد الصورة العليا لصورتين بكسلًا بكسلًا.

يمكن أن يكون image كائن صورة، أو مسارًا إلى ملف صورة غير مضغوط (bmp/pgm/ppm)، أو قيمة قياسية (صف RGB888 أو قيمة البكسل الأساسية).

mask هو صورة ثنائية تُستخدم كقناع على مستوى البكسل؛ تُعدَّل فقط البكسلات المضبوطة في القناع.

يعيد كائن الصورة حتى تتمكن من استدعاء طريقة أخرى باستخدام تدوين ..

غير مدعوم على الصور المضغوطة أو صور bayer.

difference(image: Image, mask: Image | None = None) Image

يعيد صورة الفرق المطلق بين صورتين (مثل ||a-b||).

يمكن أن يكون image كائن صورة، أو مسارًا إلى ملف صورة غير مضغوط (bmp/pgm/ppm)، أو قيمة قياسية (صف RGB888 أو قيمة البكسل الأساسية).

mask هو صورة ثنائية تُستخدم كقناع على مستوى البكسل؛ تُعدَّل فقط البكسلات المضبوطة في القناع.

يعيد كائن الصورة حتى تتمكن من استدعاء طريقة أخرى باستخدام تدوين ..

غير مدعوم على الصور المضغوطة أو صور bayer.

blend(image: Image, x: int = 0, y: int = 0, alpha: int = 128, mask: Image | None = None, **kwargs) Image

اسم بديل لـ Image.draw_image(). يمزج image بألفا في هذه الصورة. alpha عدد صحيح 0-256؛ القيم الأقرب إلى 256 تفضّل الصورة المصدر. يقبل جميع وسائط Image.draw_image() المفتاحية.

histeq(adaptive: bool = False, clip_limit: float = -1, mask: Image | None = None) Image

يجري معادلة مدرج تكراري على الصورة لتطبيع التباين والسطوع.

adaptive إذا كان True يجري معادلة مدرج تكراري تكيفية (أبطأ لكنها أفضل عمومًا).

clip_limit يحدّ التباين في النوع التكيفي (قيمة صغيرة مثل 10 تنتج نتائج CLAHE جيدة).

mask هو صورة ثنائية تُستخدم كقناع على مستوى البكسل؛ تُعدَّل فقط البكسلات المضبوطة في القناع.

يعيد كائن الصورة حتى تتمكن من استدعاء طريقة أخرى باستخدام تدوين ..

غير مدعوم على الصور المضغوطة أو صور bayer.

طرق الترشيح

erode(size: int, threshold: int | None = None, mask: Image | None = None) Image

يزيل بكسلات من حواف المناطق المُجزَّأة. يلفّ نواة ((size*2)+1)x((size*2)+1) عبر الصورة، مصفّرًا البكسل المركزي إذا كان أكثر من threshold من الجيران مصفّرًا (يعمل كتآكل قياسي إذا كان threshold هو None).

mask هو صورة ثنائية تُستخدم كقناع على مستوى البكسل؛ تُعدَّل فقط البكسلات المضبوطة في القناع.

يعيد كائن الصورة حتى تتمكن من استدعاء طريقة أخرى باستخدام تدوين ..

غير مدعوم على الصور المضغوطة أو صور bayer/yuv.

dilate(size: int, threshold: int | None = None, mask: Image | None = None) Image

يضيف بكسلات إلى حواف المناطق المُجزَّأة. يلفّ نواة ((size*2)+1)x((size*2)+1) عبر الصورة، ضابطًا البكسل المركزي إذا كان أكثر من threshold من الجيران مضبوطًا (يعمل كتمدد قياسي إذا كان threshold هو None).

mask هو صورة ثنائية تُستخدم كقناع على مستوى البكسل؛ تُعدَّل فقط البكسلات المضبوطة في القناع.

يعيد كائن الصورة حتى تتمكن من استدعاء طريقة أخرى باستخدام تدوين ..

غير مدعوم على الصور المضغوطة أو صور bayer/yuv.

open(size: int, threshold: int | None = None, mask: Image | None = None) Image

يجري تآكلًا ثم تمددًا. انظر Image.erode() و Image.dilate().

mask هو صورة ثنائية تُستخدم كقناع على مستوى البكسل؛ تُعدَّل فقط البكسلات المضبوطة في القناع.

غير مدعوم على الصور المضغوطة أو صور bayer/yuv.

close(size: int, threshold: int | None = None, mask: Image | None = None) Image

يجري تمددًا ثم تآكلًا. انظر Image.dilate() و Image.erode().

mask هو صورة ثنائية تُستخدم كقناع على مستوى البكسل؛ تُعدَّل فقط البكسلات المضبوطة في القناع.

غير مدعوم على الصور المضغوطة أو صور bayer/yuv.

top_hat(size: int, threshold: int | None = None, mask: Image | None = None) Image

يعيد فرق الصورة بين الصورة والصورة بعد تطبيق Image.open().

mask هو صورة ثنائية تُستخدم كقناع على مستوى البكسل؛ تُعدَّل فقط البكسلات المضبوطة في القناع.

غير مدعوم على الصور المضغوطة أو صور bayer/yuv.

black_hat(size: int, threshold: int | None = None, mask: Image | None = None) Image

يعيد فرق الصورة بين الصورة والصورة بعد تطبيق Image.close().

mask هو صورة ثنائية تُستخدم كقناع على مستوى البكسل؛ تُعدَّل فقط البكسلات المضبوطة في القناع.

غير مدعوم على الصور المضغوطة أو صور bayer/yuv.

mean(size: int, threshold: bool | None = False, offset: int | None = 0, invert: bool | None = False, mask: Image | None = None) Image

مرشح تنعيم متوسط قياسي باستخدام مرشح صندوقي.

size هو حجم النواة. استخدم 1 (نواة 3x3)، 2 (نواة 5x5)، إلخ.

threshold إذا كان True يضبط عتبة خرج المرشح تكيفيًّا إلى صورة ثنائية. offset يزيح التحويل الثنائي (السالب يجعل بكسلات أكثر بيضاء، والموجب يجعلها أقل). invert يعكس الخرج الثنائي.

mask هو صورة ثنائية تُستخدم كقناع على مستوى البكسل؛ تُعدَّل فقط البكسلات المضبوطة في القناع.

يعيد كائن الصورة حتى تتمكن من استدعاء طريقة أخرى باستخدام تدوين ..

غير مدعوم على الصور المضغوطة أو صور bayer/yuv.

median(size: int, percentile: float | None = 0.5, threshold: bool | None = False, offset: int | None = 0, invert: bool | None = False, mask: Image | None = None) Image

يجري مرشح نسبة مئوية على الصورة (وسيط افتراضيًّا).

size هو حجم النواة. استخدم 1 (نواة 3x3)، 2 (نواة 5x5)، إلخ.

percentile هي النسبة المئوية المراد اختيارها من كل نواة (0 = الأدنى، 0.5 = الوسيط، 1.0 = الأعلى). الافتراضي 0.5.

threshold إذا كان True يضبط عتبة خرج المرشح تكيفيًّا إلى صورة ثنائية. offset يزيح التحويل الثنائي (السالب يجعل بكسلات أكثر بيضاء، والموجب يجعلها أقل). invert يعكس الخرج الثنائي.

mask هو صورة ثنائية تُستخدم كقناع على مستوى البكسل؛ تُعدَّل فقط البكسلات المضبوطة في القناع.

يعيد كائن الصورة حتى تتمكن من استدعاء طريقة أخرى باستخدام تدوين ..

غير مدعوم على الصور المضغوطة أو صور bayer/yuv.

mode(size: int, threshold: bool | None = False, offset: int | None = 0, invert: bool | None = False, mask: Image | None = None) Image

يستبدل كل بكسل بمنوال جيرانه. قد ينتج عنه شوائب على حواف صور RGB بسبب العملية غير الخطية.

size هو حجم النواة. استخدم 1 (نواة 3x3)، 2 (نواة 5x5)، إلخ.

threshold إذا كان True يضبط عتبة خرج المرشح تكيفيًّا إلى صورة ثنائية. offset يزيح التحويل الثنائي (السالب يجعل بكسلات أكثر بيضاء، والموجب يجعلها أقل). invert يعكس الخرج الثنائي.

mask هو صورة ثنائية تُستخدم كقناع على مستوى البكسل؛ تُعدَّل فقط البكسلات المضبوطة في القناع.

يعيد كائن الصورة حتى تتمكن من استدعاء طريقة أخرى باستخدام تدوين ..

غير مدعوم على الصور المضغوطة أو صور bayer/yuv.

midpoint(size: int, bias: float | None = 0.5, threshold: bool | None = False, offset: int | None = 0, invert: bool | None = False, mask: Image | None = None) Image

يجري مرشح نقطة المنتصف على الصورة. يجد هذا المرشح نقطة المنتصف ((max-min)/2) لجوار كل بكسل في الصورة.

size هو حجم النواة. استخدم 1 (نواة 3x3)، 2 (نواة 5x5)، إلخ.

bias يتحكم في مزج min/max. 0 لترشيح min فقط، 1.0 لترشيح max فقط. باستخدام bias يمكنك ترشيح الصورة بـ min/max.

threshold إذا كان True يضبط عتبة خرج المرشح تكيفيًّا إلى صورة ثنائية. offset يزيح التحويل الثنائي (السالب يجعل بكسلات أكثر بيضاء، والموجب يجعلها أقل). invert يعكس الخرج الثنائي.

mask هو صورة ثنائية تُستخدم كقناع على مستوى البكسل؛ تُعدَّل فقط البكسلات المضبوطة في القناع.

يعيد كائن الصورة حتى تتمكن من استدعاء طريقة أخرى باستخدام تدوين ..

غير مدعوم على الصور المضغوطة أو صور bayer/yuv.

morph(size: int, kernel: list, mul: float | None = 1.0, add: float | None = 0.0, threshold: bool | None = False, offset: int | None = 0, invert: bool | None = False, mask: Image | None = None) Image

يلفّ الصورة بنواة مرشح اعتباطية.

size يتحكم في حجم النواة، الذي يجب أن يكون ((size*2)+1)x((size*2)+1) عنصرًا.

kernel هو النواة المراد اللف بها، كقائمة/صف أحادي البُعد مسطح من ((size*2)+1)*((size*2)+1) عنصرًا، أو كقائمة/صف ثنائي البُعد بـ ((size*2)+1) صفًّا من ((size*2)+1) عنصرًا.

mul هو مقياس تباين ضربي (الافتراضي 1.0).

add هو إزاحة سطوع جمعية (الافتراضي 0.0).

threshold إذا كان True يضبط عتبة خرج المرشح تكيفيًّا إلى صورة ثنائية. offset يزيح التحويل الثنائي (السالب يجعل بكسلات أكثر بيضاء، والموجب يجعلها أقل). invert يعكس الخرج الثنائي.

mask هو صورة ثنائية تُستخدم كقناع على مستوى البكسل؛ تُعدَّل فقط البكسلات المضبوطة في القناع.

يعيد كائن الصورة حتى تتمكن من استدعاء طريقة أخرى باستخدام تدوين ..

غير مدعوم على الصور المضغوطة أو صور bayer/yuv.

gaussian(size: int, unsharp: bool | None = False, mul: float | None = 1.0, add: float | None = 0.0, threshold: bool | None = False, offset: int | None = 0, invert: bool | None = False, mask: Image | None = None) Image

يلفّ الصورة بنواة gaussian للتنعيم.

size هو حجم النواة. استخدم 1 (نواة 3x3)، 2 (نواة 5x5)، إلخ.

unsharp إذا كان True يجري عملية قناع إلغاء الحدة (يشحذ الحواف) بدلًا من gaussian عادي.

mul هو مقياس تباين ضربي (الافتراضي 1.0).

add هو إزاحة سطوع جمعية (الافتراضي 0.0).

threshold إذا كان True يضبط عتبة خرج المرشح تكيفيًّا إلى صورة ثنائية. offset يزيح التحويل الثنائي (السالب يجعل بكسلات أكثر بيضاء، والموجب يجعلها أقل). invert يعكس الخرج الثنائي.

mask هو صورة ثنائية تُستخدم كقناع على مستوى البكسل؛ تُعدَّل فقط البكسلات المضبوطة في القناع.

يعيد كائن الصورة حتى تتمكن من استدعاء طريقة أخرى باستخدام تدوين ..

غير مدعوم على الصور المضغوطة أو صور bayer/yuv.

laplacian(size: int, sharpen: bool | None = False, mul: float | None = 1.0, add: float | None = 0.0, threshold: bool | None = False, offset: int | None = 0, invert: bool | None = False, mask: Image | None = None) Image

يلفّ الصورة بنواة laplacian لكشف الحواف.

size هو حجم النواة. استخدم 1 (نواة 3x3)، 2 (نواة 5x5)، إلخ.

sharpen إذا كان True يشحذ الصورة بدلًا من إخراج استجابة الحافة الخام غير المُعتبَرة.

mul هو مقياس تباين ضربي (الافتراضي 1.0).

add هو إزاحة سطوع جمعية (الافتراضي 0.0).

threshold إذا كان True يضبط عتبة خرج المرشح تكيفيًّا إلى صورة ثنائية. offset يزيح التحويل الثنائي (السالب يجعل بكسلات أكثر بيضاء، والموجب يجعلها أقل). invert يعكس الخرج الثنائي.

mask هو صورة ثنائية تُستخدم كقناع على مستوى البكسل؛ تُعدَّل فقط البكسلات المضبوطة في القناع.

يعيد كائن الصورة حتى تتمكن من استدعاء طريقة أخرى باستخدام تدوين ..

غير مدعوم على الصور المضغوطة أو صور bayer/yuv.

bilateral(size: int, color_sigma: float | None = 0.1, space_sigma: float | None = 1.0, threshold: bool | None = False, offset: int | None = 0, invert: bool | None = False, mask: Image | None = None) Image

يلفّ الصورة بمرشح ثنائي الجانب (تنعيم محافظ على الحواف).

size هو حجم النواة. استخدم 1 (نواة 3x3)، 2 (نواة 5x5)، إلخ.

color_sigma يتحكم في تسامح مطابقة اللون؛ القيم الأكبر تنتج طمسًا لونيًّا أكثر.

space_sigma يتحكم في الطمس المكاني؛ القيم الأكبر تنتج طمسًا بكسليًّا أكثر.

threshold إذا كان True يضبط عتبة خرج المرشح تكيفيًّا إلى صورة ثنائية. offset يزيح التحويل الثنائي (السالب يجعل بكسلات أكثر بيضاء، والموجب يجعلها أقل). invert يعكس الخرج الثنائي.

mask هو صورة ثنائية تُستخدم كقناع على مستوى البكسل؛ تُعدَّل فقط البكسلات المضبوطة في القناع.

يعيد كائن الصورة حتى تتمكن من استدعاء طريقة أخرى باستخدام تدوين ..

غير مدعوم على الصور المضغوطة أو صور bayer/yuv.

الطرق الهندسية

linpolar(reverse: bool = False, *, x: int | None = None, y: int | None = None) Image

يعيد إسقاط صورة من الإحداثيات الديكارتية إلى الإحداثيات القطبية الخطية.

اضبط reverse=True لإعادة الإسقاط في الاتجاه المعاكس.

x و y يحددان إحداثي مركز التحويل ببكسلات الصورة. إذا كان x هو None (الافتراضي) يُضبط على نصف عرض الصورة؛ وبالمثل y يأخذ افتراضيًّا نصف ارتفاع الصورة.

إعادة الإسقاط القطبي الخطي تحوّل تدوير الصورة إلى انتقال على محور x.

غير مدعوم على الصور المضغوطة أو صور bayer.

هذه الطريقة غير متاحة على OpenMV Cam M4.

logpolar(reverse: bool = False, *, x: int | None = None, y: int | None = None) Image

يعيد إسقاط صورة من الإحداثيات الديكارتية إلى الإحداثيات القطبية اللوغاريتمية.

اضبط reverse=True لإعادة الإسقاط في الاتجاه المعاكس.

x و y يحددان إحداثي مركز التحويل ببكسلات الصورة. إذا كان x هو None (الافتراضي) يُضبط على نصف عرض الصورة؛ وبالمثل y يأخذ افتراضيًّا نصف ارتفاع الصورة.

إعادة الإسقاط القطبي اللوغاريتمي تحوّل تدوير الصورة إلى انتقال على محور x والتحجيم/التكبير إلى انتقال على محور y.

غير مدعوم على الصور المضغوطة أو صور bayer.

هذه الطريقة غير متاحة على OpenMV Cam M4.

lens_corr(strength: float = 1.8, zoom: float = 1.0, x_corr: float = 0.0, y_corr: float = 0.0) Image

يجري تصحيح العدسة لإزالة تشوه عين السمكة من الصورة الناتج عن تشوه العدسة.

strength عائم يحدد مقدار إزالة عين السمكة من الصورة. جرّب 1.8 افتراضيًّا ثم زِد أو أنقِص من هناك حتى تبدو الصورة جيدة.

zoom هو مقدار التكبير على الصورة. 1.0 افتراضيًّا.

x_corr إزاحة بكسل عائمة من المركز. يمكن أن تكون سالبة أو موجبة.

y_corr إزاحة بكسل عائمة من المركز. يمكن أن تكون سالبة أو موجبة.

يعيد كائن الصورة حتى تتمكن من استدعاء طريقة أخرى باستخدام تدوين ..

غير مدعوم على الصور المضغوطة أو صور bayer.

rotation_corr(x_rotation: float = 0.0, y_rotation: float = 0.0, z_rotation: float = 0.0, x_translation: float = 0.0, y_translation: float = 0.0, zoom: float = 1.0, fov: float = 60.0, corners: List[Tuple[int, int]] | None = None) Image

يصحّح مشكلات المنظور في الصورة بإجراء تدوير ثلاثي الأبعاد لمخزن الإطارات.

x_rotation هو عدد الدرجات المراد تدوير الصورة بها في مخزن الإطارات حول محور x (أي يدوّر الصورة لأعلى ولأسفل).

y_rotation هو عدد الدرجات المراد تدوير الصورة بها في مخزن الإطارات حول محور y (أي يدوّر الصورة يسارًا ويمينًا).

z_rotation هو عدد الدرجات المراد تدوير الصورة بها في مخزن الإطارات حول محور z (أي يدوّر الصورة في مكانها).

x_translation هو عدد الوحدات المراد تحريك الصورة بها يسارًا أو يمينًا بعد التدوير. ولأن هذا الانتقال يُطبَّق في الفضاء ثلاثي الأبعاد فإن الوحدات ليست بكسلات...

y_translation هو عدد الوحدات المراد تحريك الصورة بها لأعلى أو لأسفل بعد التدوير. ولأن هذا الانتقال يُطبَّق في الفضاء ثلاثي الأبعاد فإن الوحدات ليست بكسلات...

zoom هو مقدار التكبير على الصورة. 1.0 افتراضيًّا.

fov هو مجال الرؤية المستخدم للإسقاط الداخلي من ثنائي إلى ثلاثي الأبعاد. كلما اقترب fov من 0 وُضعت الصورة عند اللانهاية؛ وكلما اقترب من 180 وُضعت الصورة داخل منفذ العرض.

corners هي قائمة من أربعة صفوف (x, y) تُستخدم لبناء تماثل إسقاطي من 4 نقاط يربط الأركان بـ (0, 0) و (image_width-1, 0) و (image_width-1, image_height-1) و (0, image_height-1) قبل تطبيق التدوير ثلاثي الأبعاد. مفيد لتحويلات منظور عين الطائر.

يعيد كائن الصورة حتى تتمكن من استدعاء طريقة أخرى باستخدام تدوين ..

غير مدعوم على الصور المضغوطة أو صور bayer.

هذه الطريقة غير متاحة على OpenMV Cam M4.

طرق الحصول

get_similarity(image: Image, x: int = 0, y: int = 0, x_scale: float = 1.0, y_scale: float = 1.0, roi: Tuple[int, int, int, int] | None = None, rgb_channel: int = -1, alpha: int = 255, color_palette: int | Image | None = None, alpha_palette: Image | None = None, hint: int = 0, transform: ndarray | None = None, dssim: bool = False) Similarity

يحسب التشابه بين صورتين باستخدام مؤشر التشابه البنيوي (SSIM). يتراوح SSIM من -1 (معاكس) إلى 1 (مطابق). يعيد كائن image.similarity.

image هي الصورة المراد المقارنة بها (كائن صورة أو سلسلة مسار، مثل "test.jpg").

x و y و x_scale و y_scale و roi و rgb_channel و alpha و color_palette و alpha_palette و hint و transform تقبل نفس القيم التي يقبلها Image.draw_image().

dssim إذا كان True يعيد مؤشر اللاتشابه البنيوي (DSSIM) بدلًا من ذلك، حيث 0 يعني مطابق و 1 يعني مختلف تمامًا.

get_histogram(thresholds: List[Tuple[int, int]] | None = None, invert: bool = False, roi: Tuple[int, int, int, int] | None = None, bins: int = -1, l_bins: int = -1, a_bins: int = -1, b_bins: int = -1, difference: Image | None = None) histogram

يحسب المدرج التكراري المطبَّع على جميع قنوات اللون لـ roi ويعيد كائن image.histogram. متاح أيضًا كـ Image.get_hist() أو Image.histogram().

thresholds هي قائمة من صفوف (lo, hi) لصور التدرج الرمادي، أو صفوف (l_lo, l_hi, a_lo, a_hi, b_lo, b_hi) لصور RGB565. إذا مُرِّرت، يُحسب المدرج التكراري فقط على البكسلات الواقعة ضمن العتبات.

invert يعكس مطابقة العتبة.

roi هو صف مستطيل منطقة الاهتمام (x, y, w, h). الافتراضي مستطيل الصورة.

bins (التدرج الرمادي) أو l_bins/a_bins/b_bins (RGB565) يضبط عدد سلال المدرج التكراري لكل قناة. يجب أن يكون أكبر من 2. الافتراضي أقصى عدد سلال لكل قناة.

difference يمكن ضبطه على كائن صورة للعمل على الفرق بين الصورة الحالية وتلك الصورة دون مخزن إضافي.

غير مدعوم على الصور المضغوطة أو صور bayer.

get_statistics(thresholds: List[Tuple[int, int]] | None = None, invert: bool = False, roi: Tuple[int, int, int, int] | None = None, bins: int = -1, l_bins: int = -1, a_bins: int = -1, b_bins: int = -1, difference: Image | None = None) statistics

يحسب المتوسط والوسيط والمنوال والانحراف المعياري والأدنى والأعلى والربيع الأدنى والربيع الأعلى لجميع قنوات اللون لـ roi ويعيد كائن image.statistics. متاح أيضًا كـ Image.get_stats() أو Image.statistics().

thresholds هي قائمة من صفوف (lo, hi) لصور التدرج الرمادي، أو صفوف (l_lo, l_hi, a_lo, a_hi, b_lo, b_hi) لصور RGB565. إذا مُرِّرت، تُحسب الإحصاءات فقط على البكسلات الواقعة ضمن العتبات.

invert يعكس مطابقة العتبة.

roi هو صف مستطيل منطقة الاهتمام (x, y, w, h). الافتراضي مستطيل الصورة.

bins (التدرج الرمادي) أو l_bins/a_bins/b_bins (RGB565) يضبط عدد سلال المدرج التكراري لكل قناة. يجب أن يكون أكبر من 2. الافتراضي أقصى عدد سلال لكل قناة.

difference يمكن ضبطه على كائن صورة للعمل على الفرق بين الصورة الحالية وتلك الصورة دون مخزن إضافي.

غير مدعوم على الصور المضغوطة أو صور bayer.

get_regression(thresholds: List[Tuple[int, int]], invert: bool = False, roi: Tuple[int, int, int, int] | None = None, x_stride: int = 2, y_stride: int = 1, area_threshold: int = 10, pixels_threshold: int = 10, target_size: Tuple[int, int] = (80, 60)) line

يحسب انحدارًا خطيًّا (Theil-Sen) على جميع البكسلات التي اجتازت العتبة في الصورة. يعيد كائن image.line، أو None إذا لم يُعثر على خط.

thresholds هي قائمة من صفوف (lo, hi) لصور التدرج الرمادي، أو صفوف (l_lo, l_hi, a_lo, a_hi, b_lo, b_hi) لصور RGB565.

invert يعكس مطابقة العتبة.

roi هو صف مستطيل منطقة الاهتمام (x, y, w, h). الافتراضي مستطيل الصورة.

x_stride و y_stride يتحكمان في عدد البكسلات التي يُتجاوَز عنها أثناء تقييم الصورة.

area_threshold الحد الأدنى لمساحة مربع الإحاطة؛ النتائج الأصغر تعيد None.

pixels_threshold الحد الأدنى لعدد البكسلات التي اجتازت العتبة؛ النتائج الأصغر تعيد None.

target_size هو صف (w, h). تُحجَّم منطقة الاهتمام بالمساحة لتلائم داخل هذا الحجم قبل تشغيل خوارزمية O(N^2). الافتراضي (80, 60).

غير مدعوم على الصور المضغوطة أو صور bayer.

طرق الكشف

find_blobs(thresholds: List[Tuple[int, int]], invert: bool = False, roi: Tuple[int, int, int, int] | None = None, x_stride: int = 2, y_stride: int = 1, area_threshold: int = 10, pixels_threshold: int = 10, merge: bool = False, margin: int = 0, threshold_cb: Callable | None = None, merge_cb: Callable | None = None, x_hist_bins_max: int = 0, y_hist_bins_max: int = 0) List[blob]

يجد جميع الكتل (مناطق البكسلات المتصلة التي تجتاز اختبار العتبة) في الصورة ويعيد قائمة من كائنات image.blob.

thresholds هي قائمة من صفوف (lo, hi) لصور التدرج الرمادي، أو صفوف (l_lo, l_hi, a_lo, a_hi, b_lo, b_hi) لصور RGB565 (قنوات LAB). يمكن تمرير ما يصل إلى 32 صفًّا. تُصحَّح قيم min/max المتبادلة تلقائيًّا؛ والمكونات المفقودة تأخذ افتراضيًّا المدى الأقصى.

invert يعكس مطابقة العتبة.

roi هو صف مستطيل منطقة الاهتمام (x, y, w, h). الافتراضي مستطيل الصورة.

x_stride و y_stride يتحكمان في عدد البكسلات التي يُتجاوَز عنها أثناء البحث عن كتلة. زِدهما إذا كان معروفًا أن الكتل كبيرة.

area_threshold الحد الأدنى لمساحة مربع الإحاطة؛ الكتل الأصغر تُرشَّح.

pixels_threshold الحد الأدنى لعدد البكسلات التي اجتازت العتبة؛ الكتل الأصغر تُرشَّح.

merge إذا كان True يدمج الكتل التي تتقاطع مستطيلات إحاطتها. margin يكبّر/يصغّر مستطيلات الإحاطة المستخدمة للتقاطع. الكتل المدموجة تجري عملية OR لمتجهات بتات code معًا (بت واحد لكل عتبة).

threshold_cb يُستدعى لكل كتلة بعد وضع العتبات؛ أعِد True للإبقاء، False للترشيح.

merge_cb يُستدعى لكل زوج من الكتل على وشك الدمج؛ أعِد True للسماح بالدمج، False لمنعه.

x_hist_bins_max إذا كان غير صفري، يملأ كل كتلة بإسقاط x_histogram بهذا العدد من السلال.

y_hist_bins_max إذا كان غير صفري، يملأ كل كتلة بإسقاط y_histogram بهذا العدد من السلال.

غير مدعوم على الصور المضغوطة أو صور bayer.

find_lines(roi: Tuple[int, int, int, int] | None = None, x_stride: int = 2, y_stride: int = 1, threshold: int = 1000, theta_margin: int = 25, rho_margin: int = 25) List[line]

يجد جميع الخطوط اللانهائية في الصورة باستخدام تحويل هوف. يعيد قائمة من كائنات image.line.

roi هو صف مستطيل منطقة الاهتمام (x, y, w, h). الافتراضي مستطيل الصورة.

x_stride و y_stride يتحكمان في عدد البكسلات التي يُتجاوَز عنها أثناء تحويل هوف.

threshold الحد الأدنى لمقدار الخط (مجموع مقادير sobel على طول الخط)؛ الخطوط الأقل من هذا تُرشَّح.

theta_margin و rho_margin يتحكمان في الدمج: الخطوط ضمن هذه العتبات تُدمَج.

غير مدعوم على الصور المضغوطة أو صور bayer.

هذه الطريقة غير متاحة على OpenMV Cam M4.

find_line_segments(roi: Tuple[int, int, int, int] | None = None, merge_distance: int = 0, max_theta_difference: int = 15) List[line]

يجد القطع المستقيمة في الصورة. يعيد قائمة من كائنات image.line.

roi هو صف مستطيل منطقة الاهتمام (x, y, w, h). الافتراضي مستطيل الصورة.

merge_distance هو أقصى فصل بكسلي بين قطعتين ليتم دمجهما.

max_theta_difference هو أقصى فرق theta بالدرجات بين القطع ليتم دمجها.

هذه الطريقة غير متاحة على OpenMV Cam M4.

find_circles(roi: Tuple[int, int, int, int] | None = None, x_stride: int = 2, y_stride: int = 1, threshold: int = 2000, x_margin: int = 10, y_margin: int = 10, r_margin: int = 10, r_min: int = 2, r_max: int | None = None, r_step: int = 2) List[circle]

يجد الدوائر في الصورة باستخدام تحويل هوف. يعيد قائمة من كائنات image.circle.

roi هو صف مستطيل منطقة الاهتمام (x, y, w, h). الافتراضي مستطيل الصورة.

x_stride و y_stride يتحكمان في عدد البكسلات التي يُتجاوَز عنها أثناء تحويل هوف.

threshold الحد الأدنى لمقدار الدائرة (مجموع مقادير sobel على طول الدائرة)؛ الدوائر الأقل من هذا تُرشَّح.

x_margin و y_margin و r_margin تتحكم في الدمج: الدوائر ضمن هذه العتبات تُدمَج.

r_min الحد الأدنى لنصف قطر الدائرة. الافتراضي 2.

r_max الحد الأقصى لنصف قطر الدائرة. الافتراضي min(roi.w/2, roi.h/2).

r_step حجم خطوة نصف القطر. الافتراضي 2.

هذه الطريقة غير متاحة على OpenMV Cam M4.

find_rects(roi: Tuple[int, int, int, int] | None = None, threshold: int = 1000) List[rect]

يجد المستطيلات في الصورة باستخدام خوارزمية كشف رباعيات apriltag. يعيد قائمة من كائنات image.rect.

roi هو صف مستطيل منطقة الاهتمام (x, y, w, h). الافتراضي مستطيل الصورة.

threshold الحد الأدنى لمقدار الحافة (مجموع مقادير sobel على طول حواف المستطيل)؛ المستطيلات الأقل من هذا تُرشَّح.

هذه الطريقة غير متاحة على OpenMV Cam M4.

find_qrcodes(roi: Tuple[int, int, int, int] | None = None) List[qrcode]

يجد جميع رموز qrcode ضمن roi ويعيد قائمة من كائنات image.qrcode.

roi هو صف مستطيل منطقة الاهتمام (x, y, w, h). الافتراضي مستطيل الصورة.

هذه الطريقة غير متاحة على OpenMV Cam M4.

find_apriltags(roi: Tuple[int, int, int, int] | None = None, families: int = TAG36H11, fx: float | None = None, fy: float | None = None, cx: float | None = None, cy: float | None = None) List[apriltag]

يجد جميع رموز apriltag ضمن roi ويعيد قائمة من كائنات image.apriltag.

roi هو صف مستطيل منطقة الاهتمام (x, y, w, h). الافتراضي مستطيل الصورة.

families هو قناع بتي لعائلات الوسوم المراد فك ترميزها. وهو عملية OR منطقية لـ:

الافتراضي image.TAG36H11. يتناسب وقت الكشف مع عدد العائلات المفعّلة.

fx و fy هما البعدان البؤريان للكاميرا على محوري X و Y بالبكسلات.

cx و cy هما مركز الصورة، عادةً image.width()/2 و image.height()/2.

غير مدعوم على الصور المضغوطة.

هذه الطريقة غير متاحة على OpenMV Cam M4.

find_datamatrices(roi: Tuple[int, int, int, int] | None = None, effort: int = 200) List[datamatrix]

يجد جميع رموز datamatrix ضمن roi ويعيد قائمة من كائنات image.datamatrix.

roi هو صف مستطيل منطقة الاهتمام (x, y, w, h). الافتراضي مستطيل الصورة.

effort يتحكم في مقدار الوقت المخصص لمحاولة العثور على مطابقات data matrix. القيم الأعلى تحسّن الكشف على حساب معدل الإطارات. القيم الأقل من ~160 تفشل في الكشف؛ والقيم الأعلى من ~240 تعطي عوائد متناقصة. الافتراضي 200.

هذه الطريقة غير متاحة على OpenMV Cam M4.

find_barcodes(roi: Tuple[int, int, int, int] | None = None) List[barcode]

يجد جميع الباركودات أحادية البُعد ضمن roi ويعيد قائمة من كائنات image.barcode. يمسح أفقيًّا ورأسيًّا.

أنواع الباركود المدعومة: image.EAN2 و image.EAN5 و image.EAN8 و image.UPCE و image.ISBN10 و image.UPCA و image.EAN13 و image.ISBN13 و image.I25 و image.DATABAR (RSS-14) و image.DATABAR_EXP (RSS-Expanded) و image.CODABAR و image.CODE39 و image.PDF417 و image.CODE93 و image.CODE128.

roi هو صف مستطيل منطقة الاهتمام (x, y, w, h). الافتراضي مستطيل الصورة.

هذه الطريقة غير متاحة على OpenMV Cam M4.

find_displacement(template: Image, roi: Tuple[int, int, int, int] | None = None, template_roi: Tuple[int, int, int, int] | None = None, logpolar: bool = False, fix_rotation_scale: bool = False) displacement

يجد إزاحة انتقال هذه الصورة عن template باستخدام ارتباط الطور. يعيد كائن image.displacement.

roi هو مستطيل منطقة الاهتمام (x, y, w, h). الافتراضي مستطيل الصورة.

template_roi هي منطقة اهتمام القالب. الافتراضي مستطيل صورة القالب. يجب أن يكون لـ roi و template_roi نفس العرض والارتفاع.

logpolar إذا كان True يعيد تغيير التدوير/التحجيم بدلًا من انتقال x/y.

fix_rotation_scale إذا كان True، يحسب الإزاحة بعد محاذاة التدوير والتحجيم (له معنى فقط عندما يكون logpolar=False).

ملاحظة

استخدم هذه الطريقة على أحجام صور من قوى 2 (مثل sensor.B64X64).

غير مدعوم على الصور المضغوطة أو صور bayer. غير متاح على OpenMV Cam M4.

find_template(template: Image, threshold: float, roi: Tuple[int, int, int, int] | None = None, step: int = 2, search: int = SEARCH_EX) Tuple[int, int, int, int] | None

يحاول إيجاد أول موقع في الصورة يطابق فيه template باستخدام الارتباط المتقاطع المطبَّع. يعيد صف مربع إحاطة (x, y, w, h)، أو None.

template هي صورة تدرج رمادي للمطابقة مع هذه الصورة.

threshold قيمة (0.0-1.0). القيم الأعلى تقلل النتائج الإيجابية الكاذبة والكشوفات؛ والقيم الأقل تفعل العكس.

roi هو صف مستطيل منطقة الاهتمام (x, y, w, h). الافتراضي مستطيل الصورة.

step هو عدد البكسلات التي يُتجاوَز عنها أثناء البحث (يُستخدم فقط في وضع image.SEARCH_EX).

search هو image.SEARCH_DS (بحث ماسي أسرع) أو image.SEARCH_EX (بحث شامل).

يعمل فقط على صور التدرج الرمادي.

find_features(cascade: Cascade, threshold: float = 0.5, scale: float = 1.5, roi: Tuple[int, int, int, int] | None = None) List[Tuple[int, int, int, int]]

يبحث في الصورة عن مناطق تطابق سلسلة Haar cascade المُمرَّرة ويعيد قائمة من صفوف مربعات الإحاطة (x, y, w, h). يعيد قائمة فارغة إذا لم يُعثر على ميزات.

cascade هو كائن Haar Cascade (انظر image.HaarCascade()).

threshold (0.0-1.0). القيم الأقل ترفع معدل الكشف ومعدل الإيجابيات الكاذبة.

scale يجب أن يكون أكبر من 1.0. القيم الأعلى تعمل أسرع لكنها تنتج مطابقات أضعف.

roi هو صف مستطيل منطقة الاهتمام (x, y, w, h). الافتراضي مستطيل الصورة.

find_eye(roi: Tuple[int, int, int, int]) Tuple[int, int]

يبحث عن بؤبؤ العين في صف منطقة اهتمام (x, y, w, h) حول العين. يعيد موقع (x, y) للبؤبؤ، أو (0, 0) إذا لم يُعثر على أي منها.

roi هو صف مستطيل منطقة الاهتمام (x, y, w, h).

يعمل فقط على صور التدرج الرمادي.

find_lbp(roi: Tuple[int, int, int, int]) lbp_descriptor

يستخرج نقاط LBP المفتاحية (الأنماط الثنائية المحلية) من منطقة الاهتمام. استخدم image.match_descriptor() لمقارنة واصفين.

roi هو صف مستطيل منطقة الاهتمام (x, y, w, h).

يعمل فقط على صور التدرج الرمادي.

find_keypoints(roi: Tuple[int, int, int, int] | None = None, threshold: int = 20, normalized: bool = False, scale_factor: float = 1.5, max_keypoints: int = 100, corner_detector: int = CORNER_AGAST) kp_descriptor | None

يستخرج نقاط ORB المفتاحية من منطقة الاهتمام. استخدم image.match_descriptor() لمقارنة واصفين. يعيد None إذا لم يُعثر على نقاط مفتاحية.

roi هو صف مستطيل منطقة الاهتمام (x, y, w, h). الافتراضي مستطيل الصورة.

threshold (0-255) يتحكم في عدد الأركان المستخرجة. العتبات الأقل تنتج أركانًا أكثر. استخدم ~20 لـ AGAST، و ~60-80 لـ FAST.

normalized إذا كان True، يعطّل استخراج النقاط المفتاحية متعدد الدقة.

scale_factor يجب أن يكون أكبر من 1.0. القيم الأعلى تعمل أسرع لكنها تنتج مطابقات أضعف.

max_keypoints هو أقصى عدد من النقاط المفتاحية المراد الاحتفاظ بها.

corner_detector هو image.CORNER_FAST أو image.CORNER_AGAST.

يعمل فقط على صور التدرج الرمادي.

find_edges(edge_type: int, threshold: Tuple[int, int] = (100, 200)) Image

يحوّل الصورة إلى أبيض وأسود تاركًا الحواف فقط كبكسلات بيضاء.

  • image.EDGE_SIMPLE - خوارزمية مرشح تمرير عالٍ بسيط بعتبة.

  • image.EDGE_CANNY - خوارزمية كشف حواف Canny.

threshold صف من قيمتين يحتوي على عتبة دنيا وعتبة عليا. يمكنك التحكم في جودة الحواف بضبط هاتين القيمتين. الافتراضي (100, 200).

يعمل فقط على صور التدرج الرمادي.

find_hog(roi: Tuple[int, int, int, int] | None = None, size: int = 8) Image

يستبدل البكسلات في منطقة الاهتمام بخطوط HOG (مدرج تكراري للتدرجات الموجّهة).

roi هو صف مستطيل منطقة الاهتمام (x, y, w, h). إذا لم يُحدَّد فهو يساوي مستطيل الصورة. تُعالَج فقط البكسلات الواقعة ضمن roi.

يعمل فقط على صور التدرج الرمادي.

هذه الطريقة غير متاحة على OpenMV Cam M4.

stereo_disparity(reversed: bool = False, max_disparity: int = 64, threshold: int = 64) Image

يأخذ صورة تدرج رمادي مضاعفة العرض تحتوي على خرج مستشعري كاميرا متجاورين ويستبدل أحد النصفين بصورة تباين العمق المجسم (كل بكسل يمثل عمقًا). مثلًا لكاميرتين بحجم 320x240 مرّر صورة 640x240.

reversed افتراضيًّا تُقارَن الصورة اليسرى بالصورة اليمنى وتُستبدل الصورة اليمنى. اضبط True للمقارنة من اليمين إلى اليسار واستبدال الصورة اليسرى.

max_disparity هو أقصى مسافة (1-255) للبحث عن كتلة بكسلات مطابقة باستخدام مجموع الفروق المطلقة. القيم الأكبر تستغرق وقتًا أطول أسيًّا لكنها تنتج خرجًا بجودة أعلى.

threshold إذا كان مجموع الفروق المطلقة بين كتلتين أقل من أو يساوي هذه العتبة فإنهما تُعتبران متطابقتين.

يجري بحثًا انتقائيًّا على الصورة ويعيد قائمة من صفوف مربعات الإحاطة (x, y, w, h) لاقتراحات الكائنات.

threshold هو عتبة التجزئة؛ القيم الأعلى تنتج مناطق أقل/أكبر.

size هو الحد الأدنى لحجم المنطقة بعد الدمج.

a1 و a2 و a3 هي أوزان تشابه اللون/الملمس/الحجم المستخدمة عند دمج المناطق.