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 لتُرسَل تلقائيًّا.
الطرق الأساسية¶
- format() int¶
يعيد
image.GRAYSCALEلصور التدرج الرمادي، وimage.RGB565لصور RGB565، وimage.BAYERلصور نمط bayer، وimage.JPEGلصور JPEG.
- 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:image.JPEG_SUBSAMPLING_AUTO: استخدم أفضل عينات فرعية للصورة بناءً على الجودة.image.JPEG_SUBSAMPLING_444: استخدم عينات فرعية 4:4:4.image.JPEG_SUBSAMPLING_422: استخدم عينات فرعية 4:2:2.image.JPEG_SUBSAMPLING_420: استخدم عينات فرعية 4:2:0.
يعيد كائن الصورة حتى تتمكن من استدعاء طريقة أخرى باستخدام تدوين
..
- 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.JPEG_SUBSAMPLING_AUTO: استخدم أفضل عينات فرعية للصورة بناءً على الجودة.image.JPEG_SUBSAMPLING_444: استخدم عينات فرعية 4:4:4.image.JPEG_SUBSAMPLING_422: استخدم عينات فرعية 4:2:2.image.JPEG_SUBSAMPLING_420: استخدم عينات فرعية 4:2:0.
يعيد كائن الصورة حتى تتمكن من استدعاء طريقة أخرى باستخدام تدوين
..ملاحظة
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).يعيد كائن الصورة حتى تتمكن من استدعاء طريقة أخرى باستخدام تدوين
..
طرق الرسم¶
- 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.
الطرق الحسابية¶
- 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إذا كان مجموع الفروق المطلقة بين كتلتين أقل من أو يساوي هذه العتبة فإنهما تُعتبران متطابقتين.
- selective_search(threshold: int = 500, size: int = 20, a1: float = 1.0, a2: float = 1.0, a3: float = 1.0) List[Tuple[int, int, int, int]]¶
يجري بحثًا انتقائيًّا على الصورة ويعيد قائمة من صفوف مربعات الإحاطة (x, y, w, h) لاقتراحات الكائنات.
thresholdهو عتبة التجزئة؛ القيم الأعلى تنتج مناطق أقل/أكبر.sizeهو الحد الأدنى لحجم المنطقة بعد الدمج.a1وa2وa3هي أوزان تشابه اللون/الملمس/الحجم المستخدمة عند دمج المناطق.