TensorImage היא מחלקת העטיפה עבור אובייקט תמונה. בעת שימוש בכלי עיבוד תמונה בספריית TFLite.support, מקובל להמיר אובייקטי תמונה בסוגי וריאציות ל-TensorImage בהתחלה.
נכון לעכשיו, רק תמונות RGB נתמכות, ותמיד מתעלמים מערוץ A.
פרטים על אחסון נתונים: לאובייקט TensorImage
עשויים להיות שני מקורות אמת פוטנציאליים: Bitmap
או TensorBuffer
. TensorImage
שומרת על המצב וממירה רק אחד לשני כשצריך. מקרה שימוש טיפוסי של TensorImage
הוא לטעון תחילה תמונת Bitmap
, לאחר מכן לעבד אותה באמצעות ImageProcessor
, ולבסוף לקבל את ByteBuffer
הבסיסי של TensorBuffer
ולהזין אותו לתוך המתורגמן TFLite.
חשוב: כדי להשיג את הביצועים הטובים ביותר, TensorImage
נמנעת מהעתקת נתונים בכל פעם שזה אפשרי. לכן, היא אינה הבעלים של הנתונים שלה. מתקשרים לא צריכים לשנות אובייקטי נתונים המועברים load(Bitmap)
או load(TensorBuffer, ColorSpaceType)
.
חשוב: כל השיטות לא הוכחו כבטוחות חוט.
בונים ציבוריים
TensorImage () מאתחל אובייקט TensorImage . | |
שיטות ציבוריות
סטטי TensorImage | createFrom ( TensorImage src, DataType dataType) יוצר עותק עמוק של TensorImage נתון עם סוג הנתונים הרצוי. |
סטטי TensorImage | fromBitmap (Bitmap Bitmap) |
מפת סיביות | getBitmap () מחזיר ייצוג Bitmap של TensorImage זה. |
ByteBuffer | getBuffer () מחזיר ייצוג ByteBuffer של TensorImage זה עם סוג הנתונים הצפוי. |
ColorSpaceType | getColorSpaceType () מקבל את סוג מרחב הצבע של TensorImage זה. |
סוג מידע | getDataType () מקבל את סוג הנתונים של TensorImage זה. |
int | getHeight () מקבל את גובה התמונה. |
תמונה | getMediaImage () מחזירה ייצוג Image של TensorImage זה. |
TensorBuffer | getTensorBuffer () מחזירה ייצוג TensorBuffer של TensorImage זה עם סוג הנתונים הצפוי. |
int | getWidth () מקבל את רוחב התמונה. |
בָּטֵל | טען (מאגר TensorBuffer , ColorSpaceType colorSpaceType) טוען TensorBuffer המכיל ערכי פיקסלים עם ColorSpaceType הספציפי. |
בָּטֵל | טען (מפת סיביות) טוען אובייקט תמונת Bitmap לתוך TensorImage זה. |
בָּטֵל | טען (int[] פיקסלים, int[] צורה) טוען מערך int בתור פיקסלים RGB לתוך TensorImage זה, המייצג את הפיקסלים שבתוכו. |
בָּטֵל | טען (צף[] פיקסלים, int[] צורה) טוען מערך צף בתור פיקסלים RGB לתוך TensorImage זה, המייצג את הפיקסלים שבתוכו. |
בָּטֵל | טען ( ByteBuffer buffer, ImageProperties imageProperties) טוען ByteBuffer המכיל ערכי פיקסלים עם המאפיינים הספציפיים של ImageProperties . |
בָּטֵל | טען (מאגר TensorBuffer , ImageProperties imageProperties) טוען TensorBuffer המכיל ערכי פיקסלים עם המאפיינים הספציפיים של ImageProperties . |
בָּטֵל | טען (תמונה) טוען אובייקט Image לתוך TensorImage זה. |
שיטות בירושה
בונים ציבוריים
TensorImage ציבורי ()
מאתחל אובייקט TensorImage
.
הערה: סוג הנתונים של TensorImage
זה הוא DataType.UINT8
. השתמש TensorImage(DataType)
אם מועדפים סוגי נתונים אחרים.
TensorImage ציבורי ( DataType dataType)
מאתחל אובייקט TensorImage
עם סוג הנתונים שצוין.
כאשר מקבלים TensorBuffer
או ByteBuffer
מ- TensorImage
זה, כגון שימוש ב- getTensorBuffer()
ו- getBuffer()
, ערכי הנתונים יומרו לסוג הנתונים שצוין.
הערה: הצורה של TensorImage
אינה קבועה. ניתן להתאים אותו לצורת התמונה הנטענת ל- TensorImage
זה.
פרמטרים
סוג מידע | סוג הנתונים הצפוי של TensorBuffer שנוצר. הסוג קבוע תמיד במהלך החיים של TensorImage . כדי להמיר את סוג הנתונים, השתמש ב- createFrom(TensorImage, DataType) כדי ליצור עותק ולהמיר סוג נתונים בו-זמנית. |
---|
זורק
חריג טיעון לא חוקי | אם dataType אינו DataType.UINT8 או DataType.FLOAT32 |
---|
שיטות ציבוריות
ציבורי סטטי TensorImage createFrom ( TensorImage src, DataType dataType)
יוצר עותק עמוק של TensorImage
נתון עם סוג הנתונים הרצוי.
פרמטרים
src | את TensorImage להעתיק ממנה |
---|---|
סוג מידע | סוג הנתונים הצפוי של TensorImage שזה עתה נוצר |
החזרות
-
TensorImage
שהנתונים שלו מועתקים מ-src
וסוג הנתונים הואdataType
תמונת Tensor סטטית ציבורית מ- Bitmap (מפת סיביות)
מאתחל אובייקט TensorImage
של DataType.UINT8
עם Bitmap
.
פרמטרים
מפת סיביות |
---|
מפת סיביות ציבורית getBitmap ()
מחזיר ייצוג Bitmap
של TensorImage
זה.
יציקה והידוק מספריים יחולו אם הנתונים המאוחסנים אינם uint8.
שים לב שהדרך האמינה לקבל פיקסלים ממפת סיביות ALPHA_8
היא להשתמש ב- copyPixelsToBuffer
. שיטות מפת סיביות כגון, `setPixels()` ו-`getPixels` אינן עובדות.
חשוב: זו רק התייחסות. אל תשנה. אנחנו לא יוצרים כאן עותק מחשש לביצועים, אבל אם יש צורך בשינוי, אנא צור עותק.
החזרות
- הפניה למפת
Bitmap
ARGB_8888
("ערוץ A תמיד אטום) או ב-ALPHA_8
, בהתאם ל-ColorSpaceType
שלTensorBuffer
זה.
זורק
חריגה של מדינה בלתי חוקית | אם TensorImage לעולם לא טוען נתונים |
---|
Public ByteBuffer getBuffer ()
מחזיר ייצוג ByteBuffer
של TensorImage
זה עם סוג הנתונים הצפוי.
יציקה והידוק מספריים יחולו אם הנתונים המאוחסנים שונים מסוג הנתונים של TensorImage
.
חשוב: זו רק התייחסות. אל תשנה. אנחנו לא יוצרים כאן עותק מחשש לביצועים, אבל אם יש צורך בשינוי, אנא צור עותק.
זה בעצם קיצור דרך עבור getTensorBuffer().getBuffer()
.
החזרות
- הפניה ל-
ByteBuffer
שמחזיק את נתוני התמונה
זורק
חריגה של מדינה בלתי חוקית | אם TensorImage לעולם לא טוען נתונים |
---|
public ColorSpaceType getColorSpaceType ()
מקבל את סוג מרחב הצבע של TensorImage
זה.
זורק
חריגה של מדינה בלתי חוקית | אם TensorImage לעולם לא טוען נתונים |
---|
public DataType getDataType ()
מקבל את סוג הנתונים של TensorImage
זה.
החזרות
- סוג נתונים. כרגע רק
DataType.UINT8
ו-DataType.FLOAT32
נתמכים.
public int getHeight ()
מקבל את גובה התמונה.
זורק
חריגה של מדינה בלתי חוקית | אם TensorImage לעולם לא טוען נתונים |
---|---|
חריג טיעון לא חוקי | אם הנתונים הבסיסיים פגומים |
תמונה ציבורית getMediaImage ()
מחזירה ייצוג Image
של TensorImage
זה.
שיטה זו פועלת רק כאשר ה- TensorImage
מגובה על ידי Image
, כלומר תחילה עליך לטעון Image
דרך load(Image)
.
חשוב: זו רק התייחסות. אל תשנה. אנחנו לא יוצרים כאן עותק מחשש לביצועים, אבל אם יש צורך בשינוי, אנא צור עותק.
החזרות
- הפניה למפת
Bitmap
ARGB_8888
("ערוץ A תמיד אטום) או ב-ALPHA_8
, בהתאם ל-ColorSpaceType
שלTensorBuffer
זה.
זורק
חריגה של מדינה בלתי חוקית | אם TensorImage לעולם לא טוען נתונים |
---|
הציבור TensorBuffer getTensorBuffer ()
מחזירה ייצוג TensorBuffer
של TensorImage
זה עם סוג הנתונים הצפוי.
יציקה והידוק מספריים יחולו אם הנתונים המאוחסנים שונים מסוג הנתונים של TensorImage
.
חשוב: זו רק התייחסות. אל תשנה. אנחנו לא יוצרים כאן עותק מחשש לביצועים, אבל אם יש צורך בשינוי, אנא צור עותק.
החזרות
- הפניה ל-
TensorBuffer
שמחזיק את נתוני התמונה
זורק
חריגה של מדינה בלתי חוקית | אם TensorImage לעולם לא טוען נתונים |
---|
public int getWidth ()
מקבל את רוחב התמונה.
זורק
חריגה של מדינה בלתי חוקית | אם TensorImage לעולם לא טוען נתונים |
---|---|
חריג טיעון לא חוקי | אם הנתונים הבסיסיים פגומים |
עומס ריק ציבורי (מאגר TensorBuffer , ColorSpaceType colorSpaceType)
טוען TensorBuffer
המכיל ערכי פיקסלים עם ColorSpaceType
הספציפי.
תומך רק ב- ColorSpaceType.RGB
וב- ColorSpaceType.GRAYSCALE
. השתמש load(TensorBuffer, ImageProperties)
עבור סוגי מרחב צבע אחרים.
הערה: אם סוג הנתונים של buffer
אינו תואם לזה של TensorImage
זה, יציקה והידוק מספריים יוחלו בעת קריאה getTensorBuffer()
ו- getBuffer()
.
פרמטרים
בַּלָם | ה- TensorBuffer שייטען. הצורה שלו צריכה להיות (h, w, 3) או (1, h, w, 3) עבור תמונות RGB, או (h, w) או (1, h, w) עבור תמונות GRAYSCALE |
---|---|
colorSpaceType |
זורק
חריג טיעון לא חוקי | אם צורת המאגר אינה תואמת לסוג מרחב הצבע, או אם סוג מרחב הצבע אינו נתמך |
---|
טעינת ריק ציבורי (Bitmap Bitmap)
טוען אובייקט תמונת Bitmap
לתוך TensorImage
זה.
הערה: אם ל- TensorImage
יש סוג נתונים שונה מ- DataType.UINT8
, יציקה והידוק מספריים יחולו בעת קריאה getTensorBuffer()
ו- getBuffer()
, כאשר מפת ה- Bitmap
תומר ל- TensorBuffer
.
חשוב: בעת טעינת מפת סיביות, אל תשנה יותר את מפת הסיביות מהצד המתקשר. האובייקט TensorImage
יסתמך על מפת הסיביות. זה כנראה ישנה גם את מפת הסיביות. בשיטה זו, אנו מבצעים גישת אפס העתקה עבור אותה מפת סיביות, פשוט על ידי החזקת הפניה שלה. השתמש bitmap.copy(bitmap.getConfig(), true)
כדי ליצור עותק במידת הצורך.
הערה: כדי לקבל את הביצועים הטובים ביותר, אנא טען תמונות באותה צורה כדי למנוע הקצאה מחדש של זיכרון.
פרמטרים
מפת סיביות |
---|
זורק
חריג טיעון לא חוקי | אם bitmap אינה ב-ARGB_8888 |
---|
עומס ריק ציבורי (int[] פיקסלים, int[] shape)
טוען מערך int בתור פיקסלים RGB לתוך TensorImage
זה, המייצג את הפיקסלים שבתוכו.
הערה: יציקה והידוק מספריים יוחלו כדי להמיר את הערכים לסוג הנתונים של TensorImage
זה בעת קריאה getTensorBuffer()
ו- getBuffer()
.
פרמטרים
פיקסלים | פיקסלים RGB המייצגים את התמונה |
---|---|
צוּרָה | צורת התמונה צריכה להיות בצורה (h, w, 3), או בצורה (1, h, w, 3) |
זורק
חריג טיעון לא חוקי | אם הצורה היא לא (h, w, 3) ולא (1, h, w, 3) |
---|
עומס ריק ציבורי (צף[] פיקסלים, צורה int[])
טוען מערך צף בתור פיקסלים RGB לתוך TensorImage
זה, המייצג את הפיקסלים שבתוכו.
הערה: אם ל- TensorImage
יש סוג נתונים שונה מ- DataType.FLOAT32
, הליהוק והידוק מספריים יוחלו בעת קריאה getTensorBuffer()
ו- getBuffer()
.
פרמטרים
פיקסלים | פיקסלים RGB המייצגים את התמונה |
---|---|
צוּרָה | צורת התמונה צריכה להיות בצורה (h, w, 3), או בצורה (1, h, w, 3) |
זורק
חריג טיעון לא חוקי | אם הצורה היא לא (h, w, 3) ולא (1, h, w, 3) |
---|
טעינת ריק ציבורי ( ByteBuffer buffer, ImageProperties imageProperties)
טוען ByteBuffer
המכיל ערכי פיקסלים עם המאפיינים הספציפיים של ImageProperties
.
הערה: אם סוג הנתונים של buffer
אינו תואם לזה של TensorImage
זה, יציקה והידוק מספריים יוחלו בעת קריאה getTensorBuffer()
ו- getBuffer()
.
פרמטרים
בַּלָם | |
---|---|
imageProperties |
זורק
חריג טיעון לא חוקי | אם גודל המאגר קטן מגודל התמונה המצוין על ידי גובה התמונה, רוחב וסוג מרחב הצבע ב- ImageProperties |
---|
עומס ריק ציבורי (מאגר TensorBuffer , ImageProperties imageProperties)
טוען TensorBuffer
המכיל ערכי פיקסלים עם המאפיינים הספציפיים של ImageProperties
.
הצורה של TensorBuffer
לא תשמש לקביעת גובה ורוחב התמונה. הגדר מאפייני תמונה דרך ImageProperties
.
הערה: אם סוג הנתונים של buffer
אינו תואם לזה של TensorImage
זה, יציקה והידוק מספריים יוחלו בעת קריאה getTensorBuffer()
ו- getBuffer()
.
פרמטרים
בַּלָם | |
---|---|
imageProperties |
זורק
חריג טיעון לא חוקי | אם גודל המאגר קטן מגודל התמונה המצוין על ידי גובה התמונה, רוחב וסוג מרחב הצבע ב- ImageProperties |
---|
טעינת ריק ציבורי (תמונה)
טוען אובייקט Image
לתוך TensorImage
זה.
השימוש העיקרי בשיטה זו הוא לטעון אובייקט Image
כקלט מודל אל https://www.tensorflow.org/lite/inference_with_metadata/task_library/overview . TensorImage
מגובה על ידי Image
אינו נתמך על ידי ImageProcessor
.
* @throws IllegalArgumentException אם ה- ImageFormat
של image
אינו YUV_420_888
פרמטרים
תמונה |
---|