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; בצעו debayer ל-GRAYSCALE / RGB565 תחילה.
YUV422 (16 bpp) – צבע בדגימת כרומה משנית 4:2:2, שני בתים לפיקסל. רק חלק מהשיטות עובדות ישירות על YUV422.
JPEG / PNG – חוצצים דחוסים. פעולות ברמת הפיקסל דורשות
to_grayscale()אוto_rgb565()תחילה.
מהיכן מגיעים אובייקטי Image¶
ישנן ארבע דרכים להשיג 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הוא true התמונה מועתקת לחוצץ הפריימים במקום להיות מוקצית בערמה.אם
argהואndarray, פעולה זו יוצרת אובייקט תמונה חדש מה-ndarray. אובייקטיndarrayבצורה של(w, h)נחשבים לתמונות בגווני אפור,(w, h, 3)נחשבים לתמונות RGB565. רקndarraysמסוג float32 נתמכים בשלב זה. בעת יצירת תמונה בדרך זו, אם תעבירו ארגומנטbufferהוא ישמש לאחסון נתוני התמונה במקום הקצאת מקום בערמה. אםcopy_to_fbהוא true התמונה מועתקת לחוצץ הפריימים במקום להיות מוקצית בערמה או באמצעות ה-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. תמונות בינאריות מחזירות ערך של ביט אחד.עבור תמונות JPEG, הסימון ”[]“ מאפשר לכם לגשת לכתם תמונת ה-JPEG הדחוסה כמערך בתים. עם זאת, קריאה וכתיבה למערך הנתונים אטומות מכיוון שתמונות JPEG הן זרמי בתים דחוסים.
תמונות תומכות גם בפעולות חוצץ קריאה. תוכלו להעביר תמונות לכל מיני פונקציות של MicroPython כאילו התמונה הייתה אובייקט מערך בתים. בפרט, אם תרצו לשדר תמונה תוכלו פשוט להעביר אותה לפונקציות הכתיבה של UART/SPI/I2C כדי לשדרה אוטומטית.
שיטות בסיסיות¶
- format() int¶
מחזיר
image.GRAYSCALEעבור תמונות בגווני אפור,image.RGB565עבור תמונות RGB565,image.BAYERעבור תמונות בתבנית bayer, ו-image.JPEGעבור תמונות JPEG.
- bytearray() bytearray¶
מחזיר אובייקט
bytearrayהמצביע על נתוני התמונה לגישת קריאה/כתיבה ברמת הבית.הערה
אובייקטי Image מומרים אוטומטית לאובייקטי
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()יבצע debayer לתמונת המקור באותו מיקום פיקסל ויחזיר צמד 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בעלי 3 ערוצים, ואותו תהליך המתואר לעיל עבור תמונות 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 (float). אם ערך זה שלילי התמונה תהפך אופקית. שימו לב שאםy_scaleאינו מצוין הוא יתאים ל-x_scaleכדי לשמור על יחס הממדים.y_scaleשולט בכמה התמונה המוצגת מותאמת בקנה מידה בכיוון y (float). אם ערך זה שלילי התמונה תהפך אנכית. שימו לב שאםx_scaleאינו מצוין הוא יתאים ל-x_scaleכדי לשמור על יחס הממדים.roiהוא צמד מלבן אזור העניין (x, y, w, h) של תמונת המקור לציור. זה מאפשר לכם לחלץ רק את הפיקסלים שב-ROI כדי להתאים אותם בקנה מידה ולצייר על תמונת היעד.rgb_channelהוא ערוץ ה-RGB (0=R, G=1, B=2) לחילוץ מתמונת RGB565 (אם הועברה) ולעיבוד על תמונת היעד. לדוגמה, אם תעבירוrgb_channel=1זה יחלץ את הערוץ הירוק של תמונת המקור RGB565 ויצייר אותו בגווני אפור על תמונת היעד.alphaשולט בכמה מתמונת המקור למזג לתוך תמונת היעד. ערך של 255 מצייר תמונת מקור אטומה בעוד ערך נמוך מ-255 מייצר מיזוג בין תמונת המקור והיעד. 0 גורם לאי-שינוי תמונת היעד.color_paletteאם אינוNoneיכול להיות enum של פלטת צבעים או תמונת RGB565 בת 256 פיקסלים בסך הכל שתשמש כטבלת חיפוש צבעים על ערך גווני האפור של תמונת המקור כלשהי. זה מוחל לאחר חילוץrgb_channelאם נעשה בו שימוש.alpha_paletteאם אינוNoneיכול להיות תמונת GRAYSCALE בת 256 פיקסלים בסך הכל שתשמש כפלטת אלפא המווסתת את ערך ה-alphaשל תמונת המקור המצוירת ברמת הפיקסל, מה שמאפשר לכם לשלוט במדויק בערך האלפא של פיקסלים בהתבסס על ערך גווני האפור שלהם. ערך פיקסל של 255 בטבלת חיפוש האלפא הוא אטום, וכל ערך נמוך מ-255 הופך שקוף יותר עד 0. זה מוחל לאחר חילוץrgb_channelאם נעשה בו שימוש.hintהוא OR לוגי של הדגלים המפורטים ב-Hint flags (למעט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. עם זאת, פעולות רבות כשהן מוחלות על תמונות מפת ביטים אינן הגיוניות מכיוון שלתמונות מפת ביטים יש רק 2 ערכים. 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 (float). אם ערך זה שלילי התמונה תהפך אופקית. שימו לב שאםy_scaleאינו מצוין הוא יתאים ל-x_scaleכדי לשמור על יחס הממדים.y_scaleשולט בכמה התמונה המוצגת מותאמת בקנה מידה בכיוון y (float). אם ערך זה שלילי התמונה תהפך אנכית. שימו לב שאםx_scaleאינו מצוין הוא יתאים ל-x_scaleכדי לשמור על יחס הממדים.roiהוא צמד מלבן אזור העניין (x, y, w, h) של תמונת המקור לציור. זה מאפשר לכם לחלץ רק את הפיקסלים שב-ROI כדי להתאים אותם בקנה מידה ולצייר על תמונת היעד.rgb_channelהוא ערוץ ה-RGB (0=R, G=1, B=2) לחילוץ מתמונת RGB565 (אם הועברה) ולעיבוד על תמונת היעד. לדוגמה, אם תעבירוrgb_channel=1זה יחלץ את הערוץ הירוק של תמונת המקור RGB565 ויצייר אותו בגווני אפור על תמונת היעד.alphaשולט בכמה מתמונת המקור למזג לתוך תמונת היעד. ערך של 255 מצייר תמונת מקור אטומה בעוד ערך נמוך מ-255 מייצר מיזוג בין תמונת המקור והיעד. 0 גורם לאי-שינוי תמונת היעד.color_paletteאם אינוNoneיכול להיות enum של פלטת צבעים או תמונת RGB565 בת 256 פיקסלים בסך הכל שתשמש כטבלת חיפוש צבעים על ערך גווני האפור של תמונת המקור כלשהי. זה מוחל לאחר חילוץrgb_channelאם נעשה בו שימוש.alpha_paletteאם אינוNoneיכול להיות תמונת GRAYSCALE בת 256 פיקסלים בסך הכל שתשמש כפלטת אלפא המווסתת את ערך ה-alphaשל תמונת המקור המצוירת ברמת הפיקסל, מה שמאפשר לכם לשלוט במדויק בערך האלפא של פיקסלים בהתבסס על ערך גווני האפור שלהם. ערך פיקסל של 255 בטבלת חיפוש האלפא הוא אטום, וכל ערך נמוך מ-255 הופך שקוף יותר עד 0. זה מוחל לאחר חילוץrgb_channelאם נעשה בו שימוש.hintהוא OR לוגי של הדגלים המפורטים ב-Hint flags (למעט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 (float). אם ערך זה שלילי התמונה תהפך אופקית. שימו לב שאםy_scaleאינו מצוין הוא יתאים ל-x_scaleכדי לשמור על יחס הממדים.y_scaleשולט בכמה התמונה המוצגת מותאמת בקנה מידה בכיוון y (float). אם ערך זה שלילי התמונה תהפך אנכית. שימו לב שאםx_scaleאינו מצוין הוא יתאים ל-x_scaleכדי לשמור על יחס הממדים.roiהוא צמד מלבן אזור העניין (x, y, w, h) של תמונת המקור לציור. זה מאפשר לכם לחלץ רק את הפיקסלים שב-ROI כדי להתאים אותם בקנה מידה ולצייר על תמונת היעד.rgb_channelהוא ערוץ ה-RGB (0=R, G=1, B=2) לחילוץ מתמונת RGB565 (אם הועברה) ולעיבוד על תמונת היעד. לדוגמה, אם תעבירוrgb_channel=1זה יחלץ את הערוץ הירוק של תמונת המקור RGB565 ויצייר אותו בגווני אפור על תמונת היעד.alphaשולט בכמה מתמונת המקור למזג לתוך תמונת היעד. ערך של 255 מצייר תמונת מקור אטומה בעוד ערך נמוך מ-255 מייצר מיזוג בין תמונת המקור והיעד. 0 גורם לאי-שינוי תמונת היעד.color_paletteאם אינוNoneיכול להיות enum של פלטת צבעים או תמונת RGB565 בת 256 פיקסלים בסך הכל שתשמש כטבלת חיפוש צבעים על ערך גווני האפור של תמונת המקור כלשהי. זה מוחל לאחר חילוץrgb_channelאם נעשה בו שימוש.alpha_paletteאם אינוNoneיכול להיות תמונת GRAYSCALE בת 256 פיקסלים בסך הכל שתשמש כפלטת אלפא המווסתת את ערך ה-alphaשל תמונת המקור המצוירת ברמת הפיקסל, מה שמאפשר לכם לשלוט במדויק בערך האלפא של פיקסלים בהתבסס על ערך גווני האפור שלהם. ערך פיקסל של 255 בטבלת חיפוש האלפא הוא אטום, וכל ערך נמוך מ-255 הופך שקוף יותר עד 0. זה מוחל לאחר חילוץrgb_channelאם נעשה בו שימוש.hintהוא OR לוגי של הדגלים המפורטים ב-Hint flags (למעט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 (float). אם ערך זה שלילי התמונה תהפך אופקית. שימו לב שאםy_scaleאינו מצוין הוא יתאים ל-x_scaleכדי לשמור על יחס הממדים.y_scaleשולט בכמה התמונה המוצגת מותאמת בקנה מידה בכיוון y (float). אם ערך זה שלילי התמונה תהפך אנכית. שימו לב שאםx_scaleאינו מצוין הוא יתאים ל-x_scaleכדי לשמור על יחס הממדים.roiהוא צמד מלבן אזור העניין (x, y, w, h) של תמונת המקור לציור. זה מאפשר לכם לחלץ רק את הפיקסלים שב-ROI כדי להתאים אותם בקנה מידה ולצייר על תמונת היעד.rgb_channelהוא ערוץ ה-RGB (0=R, G=1, B=2) לחילוץ מתמונת RGB565 (אם הועברה) ולעיבוד על תמונת היעד. לדוגמה, אם תעבירוrgb_channel=1זה יחלץ את הערוץ הירוק של תמונת המקור RGB565 ויצייר אותו בגווני אפור על תמונת היעד.alphaשולט בכמה מתמונת המקור למזג לתוך תמונת היעד. ערך של 255 מצייר תמונת מקור אטומה בעוד ערך נמוך מ-255 מייצר מיזוג בין תמונת המקור והיעד. 0 גורם לאי-שינוי תמונת היעד.color_paletteאם אינוNoneיכול להיות enum של פלטת צבעים או תמונת RGB565 בת 256 פיקסלים בסך הכל שתשמש כטבלת חיפוש צבעים על ערך גווני האפור של תמונת המקור כלשהי. זה מוחל לאחר חילוץrgb_channelאם נעשה בו שימוש.alpha_paletteאם אינוNoneיכול להיות תמונת GRAYSCALE בת 256 פיקסלים בסך הכל שתשמש כפלטת אלפא המווסתת את ערך ה-alphaשל תמונת המקור המצוירת ברמת הפיקסל, מה שמאפשר לכם לשלוט במדויק בערך האלפא של פיקסלים בהתבסס על ערך גווני האפור שלהם. ערך פיקסל של 255 בטבלת חיפוש האלפא הוא אטום, וכל ערך נמוך מ-255 הופך שקוף יותר עד 0. זה מוחל לאחר חילוץrgb_channelאם נעשה בו שימוש.hintהוא OR לוגי של הדגלים המפורטים ב-Hint flags (למעט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 (float). אם ערך זה שלילי התמונה תהפך אופקית. שימו לב שאםy_scaleאינו מצוין הוא יתאים ל-x_scaleכדי לשמור על יחס הממדים.y_scaleשולט בכמה התמונה המוצגת מותאמת בקנה מידה בכיוון y (float). אם ערך זה שלילי התמונה תהפך אנכית. שימו לב שאםx_scaleאינו מצוין הוא יתאים ל-x_scaleכדי לשמור על יחס הממדים.roiהוא צמד מלבן אזור העניין (x, y, w, h) של תמונת המקור לציור. זה מאפשר לכם לחלץ רק את הפיקסלים שב-ROI כדי להתאים אותם בקנה מידה ולצייר על תמונת היעד.rgb_channelהוא ערוץ ה-RGB (0=R, G=1, B=2) לחילוץ מתמונת RGB565 (אם הועברה) ולעיבוד על תמונת היעד. לדוגמה, אם תעבירוrgb_channel=1זה יחלץ את הערוץ הירוק של תמונת המקור RGB565 ויצייר אותו בגווני אפור על תמונת היעד.alphaשולט בכמה מתמונת המקור למזג לתוך תמונת היעד. ערך של 255 מצייר תמונת מקור אטומה בעוד ערך נמוך מ-255 מייצר מיזוג בין תמונת המקור והיעד. 0 גורם לאי-שינוי תמונת היעד.color_paletteאם אינוNoneיכול להיות enum של פלטת צבעים או תמונת RGB565 בת 256 פיקסלים בסך הכל שתשמש כטבלת חיפוש צבעים על ערך גווני האפור של תמונת המקור כלשהי. זה מוחל לאחר חילוץrgb_channelאם נעשה בו שימוש.alpha_paletteאם אינוNoneיכול להיות תמונת GRAYSCALE בת 256 פיקסלים בסך הכל שתשמש כפלטת אלפא המווסתת את ערך ה-alphaשל תמונת המקור המצוירת ברמת הפיקסל, מה שמאפשר לכם לשלוט במדויק בערך האלפא של פיקסלים בהתבסס על ערך גווני האפור שלהם. ערך פיקסל של 255 בטבלת חיפוש האלפא הוא אטום, וכל ערך נמוך מ-255 הופך שקוף יותר עד 0. זה מוחל לאחר חילוץrgb_channelאם נעשה בו שימוש.hintהוא OR לוגי של הדגלים המפורטים ב-Hint flags (למעט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 (float). אם ערך זה שלילי התמונה תהפך אופקית. שימו לב שאםy_scaleאינו מצוין הוא יתאים ל-x_scaleכדי לשמור על יחס הממדים.y_scaleשולט בכמה התמונה המוצגת מותאמת בקנה מידה בכיוון y (float). אם ערך זה שלילי התמונה תהפך אנכית. שימו לב שאםx_scaleאינו מצוין הוא יתאים ל-x_scaleכדי לשמור על יחס הממדים.roiהוא צמד מלבן אזור העניין (x, y, w, h) של תמונת המקור לציור. זה מאפשר לכם לחלץ רק את הפיקסלים שב-ROI כדי להתאים אותם בקנה מידה ולצייר על תמונת היעד.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 לוגי של הדגלים המפורטים ב-Hint flags (למעט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 (float). אם ערך זה שלילי התמונה תהפך אופקית. שימו לב שאםy_scaleאינו מצוין הוא יתאים ל-x_scaleכדי לשמור על יחס הממדים.y_scaleשולט בכמה התמונה המוצגת מותאמת בקנה מידה בכיוון y (float). אם ערך זה שלילי התמונה תהפך אנכית. שימו לב שאםx_scaleאינו מצוין הוא יתאים ל-x_scaleכדי לשמור על יחס הממדים.roiהוא צמד מלבן אזור העניין (x, y, w, h) של תמונת המקור לציור. זה מאפשר לכם לחלץ רק את הפיקסלים שב-ROI כדי להתאים אותם בקנה מידה ולצייר על תמונת היעד.rgb_channelהוא ערוץ ה-RGB (0=R, G=1, B=2) לחילוץ מתמונת RGB565 (אם הועברה) ולעיבוד על תמונת היעד. לדוגמה, אם תעבירוrgb_channel=1זה יחלץ את הערוץ הירוק של תמונת המקור RGB565 ויצייר אותו בגווני אפור על תמונת היעד.alphaשולט בכמה מתמונת המקור למזג לתוך תמונת היעד. ערך של 255 מצייר תמונת מקור אטומה בעוד ערך נמוך מ-255 מייצר מיזוג בין תמונת המקור והיעד. 0 גורם לאי-שינוי תמונת היעד.color_paletteאם אינוNoneיכול להיות enum של פלטת צבעים או תמונת RGB565 בת 256 פיקסלים בסך הכל שתשמש כטבלת חיפוש צבעים על ערך גווני האפור של תמונת המקור כלשהי. זה מוחל לאחר חילוץrgb_channelאם נעשה בו שימוש.alpha_paletteאם אינוNoneיכול להיות תמונת GRAYSCALE בת 256 פיקסלים בסך הכל שתשמש כפלטת אלפא המווסתת את ערך ה-alphaשל תמונת המקור המצוירת ברמת הפיקסל, מה שמאפשר לכם לשלוט במדויק בערך האלפא של פיקסלים בהתבסס על ערך גווני האפור שלהם. ערך פיקסל של 255 בטבלת חיפוש האלפא הוא אטום, וכל ערך נמוך מ-255 הופך שקוף יותר עד 0. זה מוחל לאחר חילוץrgb_channelאם נעשה בו שימוש.hintהוא OR לוגי של הדגלים המפורטים ב-Hint flags (למעט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 (float). אם ערך זה שלילי התמונה תהפך אופקית. שימו לב שאםy_scaleאינו מצוין הוא יתאים ל-x_scaleכדי לשמור על יחס הממדים.y_scaleשולט בכמה התמונה המוצגת מותאמת בקנה מידה בכיוון y (float). אם ערך זה שלילי התמונה תהפך אנכית. שימו לב שאםx_scaleאינו מצוין הוא יתאים ל-x_scaleכדי לשמור על יחס הממדים.roiהוא צמד מלבן אזור העניין (x, y, w, h) של תמונת המקור לציור. זה מאפשר לכם לחלץ רק את הפיקסלים שב-ROI כדי להתאים אותם בקנה מידה ולצייר על תמונת היעד.rgb_channelהוא ערוץ ה-RGB (0=R, G=1, B=2) לחילוץ מתמונת RGB565 (אם הועברה) ולעיבוד על תמונת היעד. לדוגמה, אם תעבירוrgb_channel=1זה יחלץ את הערוץ הירוק של תמונת המקור RGB565 ויצייר אותו בגווני אפור על תמונת היעד.alphaשולט בכמה מתמונת המקור למזג לתוך תמונת היעד. ערך של 255 מצייר תמונת מקור אטומה בעוד ערך נמוך מ-255 מייצר מיזוג בין תמונת המקור והיעד. 0 גורם לאי-שינוי תמונת היעד.color_paletteאם אינוNoneיכול להיות enum של פלטת צבעים או תמונת RGB565 בת 256 פיקסלים בסך הכל שתשמש כטבלת חיפוש צבעים על ערך גווני האפור של תמונת המקור כלשהי. זה מוחל לאחר חילוץrgb_channelאם נעשה בו שימוש.alpha_paletteאם אינוNoneיכול להיות תמונת GRAYSCALE בת 256 פיקסלים בסך הכל שתשמש כפלטת אלפא המווסתת את ערך ה-alphaשל תמונת המקור המצוירת ברמת הפיקסל, מה שמאפשר לכם לשלוט במדויק בערך האלפא של פיקסלים בהתבסס על ערך גווני האפור שלהם. ערך פיקסל של 255 בטבלת חיפוש האלפא הוא אטום, וכל ערך נמוך מ-255 הופך שקוף יותר עד 0. זה מוחל לאחר חילוץrgb_channelאם נעשה בו שימוש.hintהוא OR לוגי של הדגלים המפורטים ב-Hint flags (למעט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 (float). אם ערך זה שלילי התמונה תהפך אופקית. שימו לב שאםy_scaleאינו מצוין הוא יתאים ל-x_scaleכדי לשמור על יחס הממדים.y_scaleשולט בכמה התמונה המוצגת מותאמת בקנה מידה בכיוון y (float). אם ערך זה שלילי התמונה תהפך אנכית. שימו לב שאםx_scaleאינו מצוין הוא יתאים ל-x_scaleכדי לשמור על יחס הממדים.roiהוא צמד מלבן אזור העניין (x, y, w, h) של תמונת המקור לציור. זה מאפשר לכם לחלץ רק את הפיקסלים שב-ROI כדי להתאים אותם בקנה מידה ולצייר על תמונת היעד.rgb_channelהוא ערוץ ה-RGB (0=R, G=1, B=2) לחילוץ מתמונת RGB565 (אם הועברה) ולעיבוד על תמונת היעד. לדוגמה, אם תעבירוrgb_channel=1זה יחלץ את הערוץ הירוק של תמונת המקור RGB565 ויצייר אותו בגווני אפור על תמונת היעד.alphaשולט בכמה מתמונת המקור למזג לתוך תמונת היעד. ערך של 255 מצייר תמונת מקור אטומה בעוד ערך נמוך מ-255 מייצר מיזוג בין תמונת המקור והיעד. 0 גורם לאי-שינוי תמונת היעד.color_paletteאם אינוNoneיכול להיות enum של פלטת צבעים או תמונת RGB565 בת 256 פיקסלים בסך הכל שתשמש כטבלת חיפוש צבעים על ערך גווני האפור של תמונת המקור כלשהי. זה מוחל לאחר חילוץrgb_channelאם נעשה בו שימוש.alpha_paletteאם אינוNoneיכול להיות תמונת GRAYSCALE בת 256 פיקסלים בסך הכל שתשמש כפלטת אלפא המווסתת את ערך ה-alphaשל תמונת המקור המצוירת ברמת הפיקסל, מה שמאפשר לכם לשלוט במדויק בערך האלפא של פיקסלים בהתבסס על ערך גווני האפור שלהם. ערך פיקסל של 255 בטבלת חיפוש האלפא הוא אטום, וכל ערך נמוך מ-255 הופך שקוף יותר עד 0. זה מוחל לאחר חילוץrgb_channelאם נעשה בו שימוש.hintהוא OR לוגי של הדגלים המפורטים ב-Hint flags (למעט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 (float). אם ערך זה שלילי התמונה תהפך אופקית. שימו לב שאםy_scaleאינו מצוין הוא יתאים ל-x_scaleכדי לשמור על יחס הממדים.y_scaleשולט בכמה התמונה המוצגת מותאמת בקנה מידה בכיוון y (float). אם ערך זה שלילי התמונה תהפך אנכית. שימו לב שאםx_scaleאינו מצוין הוא יתאים ל-x_scaleכדי לשמור על יחס הממדים.roiהוא צמד מלבן אזור העניין (x, y, w, h) של תמונת המקור לציור. זה מאפשר לכם לחלץ רק את הפיקסלים שב-ROI כדי להתאים אותם בקנה מידה ולצייר על תמונת היעד.rgb_channelהוא ערוץ ה-RGB (0=R, G=1, B=2) לחילוץ מתמונת RGB565 (אם הועברה) ולעיבוד על תמונת היעד. לדוגמה, אם תעבירוrgb_channel=1זה יחלץ את הערוץ הירוק של תמונת המקור RGB565 ויצייר אותו בגווני אפור על תמונת היעד.alphaשולט בכמה מתמונת המקור למזג לתוך תמונת היעד. ערך של 255 מצייר תמונת מקור אטומה בעוד ערך נמוך מ-255 מייצר מיזוג בין תמונת המקור והיעד. 0 גורם לאי-שינוי תמונת היעד.color_paletteאם אינוNoneיכול להיות enum של פלטת צבעים או תמונת RGB565 בת 256 פיקסלים בסך הכל שתשמש כטבלת חיפוש צבעים על ערך גווני האפור של תמונת המקור כלשהי. זה מוחל לאחר חילוץrgb_channelאם נעשה בו שימוש.alpha_paletteאם אינוNoneיכול להיות תמונת GRAYSCALE בת 256 פיקסלים בסך הכל שתשמש כפלטת אלפא המווסתת את ערך ה-alphaשל תמונת המקור המצוירת ברמת הפיקסל, מה שמאפשר לכם לשלוט במדויק בערך האלפא של פיקסלים בהתבסס על ערך גווני האפור שלהם. ערך פיקסל של 255 בטבלת חיפוש האלפא הוא אטום, וכל ערך נמוך מ-255 הופך שקוף יותר עד 0. זה מוחל לאחר חילוץrgb_channelאם נעשה בו שימוש.hintהוא OR לוגי של הדגלים המפורטים ב-Hint flags (למעט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 (float). אם ערך זה שלילי התמונה תהפך אופקית. שימו לב שאםy_scaleאינו מצוין הוא יתאים ל-x_scaleכדי לשמור על יחס הממדים.y_scaleשולט בכמה התמונה המוצגת מותאמת בקנה מידה בכיוון y (float). אם ערך זה שלילי התמונה תהפך אנכית. שימו לב שאםx_scaleאינו מצוין הוא יתאים ל-x_scaleכדי לשמור על יחס הממדים.roiהוא צמד מלבן אזור העניין (x, y, w, h) של תמונת המקור לציור. זה מאפשר לכם לחלץ רק את הפיקסלים שב-ROI כדי להתאים אותם בקנה מידה ולצייר על תמונת היעד.rgb_channelהוא ערוץ ה-RGB (0=R, G=1, B=2) לחילוץ מתמונת RGB565 (אם הועברה) ולעיבוד על תמונת היעד. לדוגמה, אם תעבירוrgb_channel=1זה יחלץ את הערוץ הירוק של תמונת המקור RGB565 ויצייר אותו בגווני אפור על תמונת היעד.alphaשולט בכמה מתמונת המקור למזג לתוך תמונת היעד. ערך של 255 מצייר תמונת מקור אטומה בעוד ערך נמוך מ-255 מייצר מיזוג בין תמונת המקור והיעד. 0 גורם לאי-שינוי תמונת היעד.color_paletteאם אינוNoneיכול להיות enum של פלטת צבעים או תמונת RGB565 בת 256 פיקסלים בסך הכל שתשמש כטבלת חיפוש צבעים על ערך גווני האפור של תמונת המקור כלשהי. זה מוחל לאחר חילוץrgb_channelאם נעשה בו שימוש.alpha_paletteאם אינוNoneיכול להיות תמונת GRAYSCALE בת 256 פיקסלים בסך הכל שתשמש כפלטת אלפא המווסתת את ערך ה-alphaשל תמונת המקור המצוירת ברמת הפיקסל, מה שמאפשר לכם לשלוט במדויק בערך האלפא של פיקסלים בהתבסס על ערך גווני האפור שלהם. ערך פיקסל של 255 בטבלת חיפוש האלפא הוא אטום, וכל ערך נמוך מ-255 הופך שקוף יותר עד 0. זה מוחל לאחר חילוץrgb_channelאם נעשה בו שימוש.hintהוא OR לוגי של הדגלים המפורטים ב-Hint flags (למעט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 (float). אם ערך זה שלילי התמונה תהפך אופקית. שימו לב שאםy_scaleאינו מצוין הוא יתאים ל-x_scaleכדי לשמור על יחס הממדים.y_scaleשולט בכמה התמונה המוצגת מותאמת בקנה מידה בכיוון y (float). אם ערך זה שלילי התמונה תהפך אנכית. שימו לב שאםx_scaleאינו מצוין הוא יתאים ל-x_scaleכדי לשמור על יחס הממדים.roiהוא צמד מלבן אזור העניין (x, y, w, h) של תמונת המקור לציור. זה מאפשר לכם לחלץ רק את הפיקסלים שב-ROI כדי להתאים אותם בקנה מידה ולצייר על תמונת היעד.rgb_channelהוא ערוץ ה-RGB (0=R, G=1, B=2) לחילוץ מתמונת RGB565 (אם הועברה) ולעיבוד על תמונת היעד. לדוגמה, אם תעבירוrgb_channel=1זה יחלץ את הערוץ הירוק של תמונת המקור RGB565 ויצייר אותו בגווני אפור על תמונת היעד.alphaשולט בכמה מתמונת המקור למזג לתוך תמונת היעד. ערך של 255 מצייר תמונת מקור אטומה בעוד ערך נמוך מ-255 מייצר מיזוג בין תמונת המקור והיעד. 0 גורם לאי-שינוי תמונת היעד.color_paletteאם אינוNoneיכול להיות enum של פלטת צבעים או תמונת RGB565 בת 256 פיקסלים בסך הכל שתשמש כטבלת חיפוש צבעים על ערך גווני האפור של תמונת המקור כלשהי. זה מוחל לאחר חילוץrgb_channelאם נעשה בו שימוש.alpha_paletteאם אינוNoneיכול להיות תמונת GRAYSCALE בת 256 פיקסלים בסך הכל שתשמש כפלטת אלפא המווסתת את ערך ה-alphaשל תמונת המקור המצוירת ברמת הפיקסל, מה שמאפשר לכם לשלוט במדויק בערך האלפא של פיקסלים בהתבסס על ערך גווני האפור שלהם. ערך פיקסל של 255 בטבלת חיפוש האלפא הוא אטום, וכל ערך נמוך מ-255 הופך שקוף יותר עד 0. זה מוחל לאחר חילוץrgb_channelאם נעשה בו שימוש.hintהוא OR לוגי של הדגלים המפורטים ב-Hint flags (למעט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 (float). אם ערך זה שלילי התמונה תהפך אופקית. שימו לב שאםy_scaleאינו מצוין הוא יתאים ל-x_scaleכדי לשמור על יחס הממדים.y_scaleשולט בכמה התמונה המוצגת מותאמת בקנה מידה בכיוון y (float). אם ערך זה שלילי התמונה תהפך אנכית. שימו לב שאםx_scaleאינו מצוין הוא יתאים ל-x_scaleכדי לשמור על יחס הממדים.roiהוא צמד מלבן אזור העניין (x, y, w, h) של תמונת המקור לציור. זה מאפשר לכם לחלץ רק את הפיקסלים שב-ROI כדי להתאים אותם בקנה מידה ולצייר על תמונת היעד.rgb_channelהוא ערוץ ה-RGB (0=R, G=1, B=2) לחילוץ מתמונת RGB565 (אם הועברה) ולעיבוד על תמונת היעד. לדוגמה, אם תעבירוrgb_channel=1זה יחלץ את הערוץ הירוק של תמונת המקור RGB565 ויצייר אותו בגווני אפור על תמונת היעד.alphaשולט בכמה מתמונת המקור למזג לתוך תמונת היעד. ערך של 255 מצייר תמונת מקור אטומה בעוד ערך נמוך מ-255 מייצר מיזוג בין תמונת המקור והיעד. 0 גורם לאי-שינוי תמונת היעד.color_paletteאם אינוNoneיכול להיות enum של פלטת צבעים או תמונת RGB565 בת 256 פיקסלים בסך הכל שתשמש כטבלת חיפוש צבעים על ערך גווני האפור של תמונת המקור כלשהי. זה מוחל לאחר חילוץrgb_channelאם נעשה בו שימוש.alpha_paletteאם אינוNoneיכול להיות תמונת GRAYSCALE בת 256 פיקסלים בסך הכל שתשמש כפלטת אלפא המווסתת את ערך ה-alphaשל תמונת המקור המצוירת ברמת הפיקסל, מה שמאפשר לכם לשלוט במדויק בערך האלפא של פיקסלים בהתבסס על ערך גווני האפור שלהם. ערך פיקסל של 255 בטבלת חיפוש האלפא הוא אטום, וכל ערך נמוך מ-255 הופך שקוף יותר עד 0. זה מוחל לאחר חילוץrgb_channelאם נעשה בו שימוש.hintהוא OR לוגי של הדגלים המפורטים ב-Hint flags (למעט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 (float). אם ערך זה שלילי התמונה תהפך אופקית. שימו לב שאםy_scaleאינו מצוין הוא יתאים ל-x_scaleכדי לשמור על יחס הממדים.y_scaleשולט בכמה התמונה המוצגת מותאמת בקנה מידה בכיוון y (float). אם ערך זה שלילי התמונה תהפך אנכית. שימו לב שאםx_scaleאינו מצוין הוא יתאים ל-x_scaleכדי לשמור על יחס הממדים.roiהוא צמד מלבן אזור העניין (x, y, w, h) של תמונת המקור לציור. זה מאפשר לכם לחלץ רק את הפיקסלים שב-ROI כדי להתאים אותם בקנה מידה ולצייר על תמונת היעד.rgb_channelהוא ערוץ ה-RGB (0=R, G=1, B=2) לחילוץ מתמונת RGB565 (אם הועברה) ולעיבוד על תמונת היעד. לדוגמה, אם תעבירוrgb_channel=1זה יחלץ את הערוץ הירוק של תמונת המקור RGB565 ויצייר אותו בגווני אפור על תמונת היעד.alphaשולט בכמה מתמונת המקור למזג לתוך תמונת היעד. ערך של 255 מצייר תמונת מקור אטומה בעוד ערך נמוך מ-255 מייצר מיזוג בין תמונת המקור והיעד. 0 גורם לאי-שינוי תמונת היעד.color_paletteאם אינוNoneיכול להיות enum של פלטת צבעים או תמונת RGB565 בת 256 פיקסלים בסך הכל שתשמש כטבלת חיפוש צבעים על ערך גווני האפור של תמונת המקור כלשהי. זה מוחל לאחר חילוץrgb_channelאם נעשה בו שימוש.alpha_paletteאם אינוNoneיכול להיות תמונת GRAYSCALE בת 256 פיקסלים בסך הכל שתשמש כפלטת אלפא המווסתת את ערך ה-alphaשל תמונת המקור המצוירת ברמת הפיקסל, מה שמאפשר לכם לשלוט במדויק בערך האלפא של פיקסלים בהתבסס על ערך גווני האפור שלהם. ערך פיקסל של 255 בטבלת חיפוש האלפא הוא אטום, וכל ערך נמוך מ-255 הופך שקוף יותר עד 0. זה מוחל לאחר חילוץrgb_channelאם נעשה בו שימוש.hintהוא OR לוגי של הדגלים המפורטים ב-Hint flags (למעט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הוא צמד בן 6 ערכים(rx, ry, rw, rh, cx, cy)המתאר מלבן תוחם ומרכז מסה (מוחזר בדרך כלל על ידי קוד NN או מעקב צבע).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. 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 (float). אם ערך זה שלילי התמונה תהפך אופקית. שימו לב שאםy_scaleאינו מצוין הוא יתאים ל-x_scaleכדי לשמור על יחס הממדים.y_scaleשולט בכמה התמונה המוצגת מותאמת בקנה מידה בכיוון y (float). אם ערך זה שלילי התמונה תהפך אנכית. שימו לב שאםx_scaleאינו מצוין הוא יתאים ל-x_scaleכדי לשמור על יחס הממדים.roiהוא צמד מלבן אזור העניין (x, y, w, h) של תמונת המקור לציור. זה מאפשר לכם לחלץ רק את הפיקסלים שב-ROI כדי להתאים אותם בקנה מידה ולצייר על תמונת היעד.rgb_channelהוא ערוץ ה-RGB (0=R, G=1, B=2) לחילוץ מתמונת RGB565 (אם הועברה) ולעיבוד על תמונת היעד. לדוגמה, אם תעבירוrgb_channel=1זה יחלץ את הערוץ הירוק של תמונת המקור RGB565 ויצייר אותו בגווני אפור על תמונת היעד.alphaשולט בכמה מתמונת המקור למזג לתוך תמונת היעד. ערך של 255 מצייר תמונת מקור אטומה בעוד ערך נמוך מ-255 מייצר מיזוג בין תמונת המקור והיעד. 0 גורם לאי-שינוי תמונת היעד.color_paletteאם אינוNoneיכול להיות enum של פלטת צבעים או תמונת RGB565 בת 256 פיקסלים בסך הכל שתשמש כטבלת חיפוש צבעים על ערך גווני האפור של תמונת המקור כלשהי. זה מוחל לאחר חילוץrgb_channelאם נעשה בו שימוש.alpha_paletteאם אינוNoneיכול להיות תמונת GRAYSCALE בת 256 פיקסלים בסך הכל שתשמש כפלטת אלפא המווסתת את ערך ה-alphaשל תמונת המקור המצוירת ברמת הפיקסל, מה שמאפשר לכם לשלוט במדויק בערך האלפא של פיקסלים בהתבסס על ערך גווני האפור שלהם. ערך פיקסל של 255 בטבלת חיפוש האלפא הוא אטום, וכל ערך נמוך מ-255 הופך שקוף יותר עד 0. זה מוחל לאחר חילוץrgb_channelאם נעשה בו שימוש.hintהוא OR לוגי של הדגלים המפורטים ב-Hint flags (כולל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¶
מצייר את נקודות המפתח של אובייקט keypoints על התמונה. תוכלו גם להעביר רשימה של צמדים בני שלושה ערכים המכילים את (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.
שיטות בינאריות¶
- 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¶
מבצע איזון לבן אוטומטי על התמונה באמצעות אלגוריתם gray-world. פועל על תמונות RAW Bayer או RGB565. אין לו השפעה על תמונות בינאריות/גווני אפור.
maxאם True, משתמש באלגוריתם white-patch במקום.מחזיר את אובייקט התמונה כך שתוכלו לקרוא לשיטה אחרת באמצעות סימון
..לא נתמך על תמונות דחוסות או 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(). ממזג ב-alpha את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שכנים נקיים (פועל כ-erode סטנדרטי אם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שכנים מוגדרים (פועל כ-dilate סטנדרטי אםthresholdהוא None).maskהיא תמונה בינארית המשמשת כמסכה ברמת הפיקסל; רק פיקסלים מוגדרים במסכה משתנים.מחזיר את אובייקט התמונה כך שתוכלו לקרוא לשיטה אחרת באמצעות סימון
..לא נתמך על תמונות דחוסות או תמונות bayer/yuv.
- open(size: int, threshold: int | None = None, mask: Image | None = None) Image¶
מבצע erosion ואז dilation. ראו
Image.erode()ו-Image.dilate().maskהיא תמונה בינארית המשמשת כמסכה ברמת הפיקסל; רק פיקסלים מוגדרים במסכה משתנים.לא נתמך על תמונות דחוסות או תמונות bayer/yuv.
- close(size: int, threshold: int | None = None, mask: Image | None = None) Image¶
מבצע dilation ואז erosion. ראו
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¶
מבצע קונבולוציה של התמונה עם גרעין גאוסיאני מחליק.
sizeהוא גודל הגרעין. השתמשו ב-1 (גרעין 3x3), 2 (גרעין 5x5), וכו«.unsharpאם True, מבצע פעולת unsharp mask (מחדד קצוות) במקום גאוסיאן רגיל.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¶
מבצע קונבולוציה של התמונה עם גרעין לפלסיאני לזיהוי קצוות.
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הוא float המגדיר כמה לבטל את אפקט עין-הדג בתמונה. נסו 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הוא שדה הראייה המשמש להקרנה הפנימית 2D->3D. ככל ש-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). ה-ROI מוקטן בקנה מידה לפי שטח כדי להיכנס לתוך גודל זה לפני הרצת האלגוריתם 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עוצמת קו מינימלית (סכום עוצמות סובל לאורך הקו); קווים מתחת לזה מסוננים החוצה.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הוא הפרש התטא המרבי במעלות בין קטעים כדי שימוזגו.שיטה זו אינה זמינה על 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עוצמת עיגול מינימלית (סכום עוצמות סובל לאורך העיגול); עיגולים מתחת לזה מסוננים החוצה.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עוצמת קצה מינימלית (סכום עוצמות סובל לאורך קצוות המלבן); מלבנים מתחת לזה מסוננים החוצה.שיטה זו אינה זמינה על OpenMV Cam M4.
- find_qrcodes(roi: Tuple[int, int, int, int] | None = None) List[qrcode]¶
מוצא את כל ה-qrcodes בתוך ה-
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]¶
מוצא את כל ה-apriltags בתוך ה-
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]¶
מוצא את כל ה-datamatrices בתוך ה-
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 (local-binary-patterns) מאזור העניין. השתמשו ב-
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¶
מחליף את הפיקסלים ב-ROI בקווי HOG (histogram of orientated gradients).
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הם משקלי הדמיון של צבע/מרקם/גודל המשמשים בעת מיזוג אזורים.