TensorImage

فئة عامة TensorImage

TensorImage هي فئة برنامج تضمين لكائن الصورة. عند استخدام أدوات معالجة الصور في مكتبة TFLite.support، من الشائع تحويل عناصر الصور في أنواع الصيغ إلى TensorImage في البداية.

في الوقت الحالي، لا يتم دعم سوى الصور بنموذج أحمر أخضر أزرق، ويتم دائمًا تجاهل القناة A.

تفاصيل تخزين البيانات: قد يكون للعنصر TensorImage مصدران محتملان للحقيقة: Bitmap أو TensorBuffer. تحافظ السمة TensorImage على حالتها ولا تحوِّل أحدهما إلى الآخر إلا عند الحاجة. إنّ حالة استخدام TensorImage المعتادة هي تحميل صورة Bitmap أولاً، ثم معالجتها باستخدام ImageProcessor، وأخيرًا الحصول على ByteBuffer الأساسي من TensorBuffer وإدخاله في مترجم TFLite.

ملاحظة مهمة: لتحقيق أفضل أداء، يتجنّب TensorImage نسخ البيانات كلما أمكن ذلك. لذلك، لا تمتلك البيانات الخاصة بها. يجب ألا يعدّل المتصلون عناصر البيانات التي يتم تمريرها إلى load(Bitmap) أو load(TensorBuffer, ColorSpaceType).

ملاحظة مُهمة: لم يتم إثبات أنّ جميع الطرق آمنة للسلاسل.

الإنشاء العام

TensorImage()
تعمل هذه السياسة على إعداد كائن TensorImage.
TensorImage(DataType dataType)
تعمل هذه السياسة على إعداد كائن TensorImage بنوع البيانات المحدّد.

الطرق العامة

ثابتة TensorImage
createFrom(TensorImage src, DataType dataType)
لإنشاء نسخة تفصيلية من TensorImage محدّد مع نوع البيانات المطلوب.
ثابتة TensorImage
fromBitmap(صورة نقطية للصورة النقطية)
تعمل هذه السياسة على إعداد كائن TensorImage من DataType.UINT8 باستخدام Bitmap .
صورة نقطية
getBitmap()
تعرض تمثيل Bitmap لـ TensorImage هذه.
ByteBuffer
getBuffer()
تعرض تمثيل ByteBuffer لـ TensorImage هذا مع نوع البيانات المتوقّع.
ColorSpaceType
getColorSpaceType()
الحصول على نوع مساحة اللون لجهاز TensorImage هذا.
DataType
getDataType()
للحصول على نوع بيانات "TensorImage" هذا.
int
getHeight()
الحصول على ارتفاع الصورة.
صورة
getMediaImage()
تعرض تمثيل Image لـ TensorImage هذه.
TensorBuffer
getTensorBuffer()
تعرض تمثيل TensorBuffer لـ TensorImage هذا مع نوع البيانات المتوقّع.
int
getWidth()
للحصول على عرض الصورة.
void
load(المخزن المؤقت TensorBuffer، وColorSpaceType colorSpaceType)
لتحميل TensorBuffer التي تحتوي على قيم البكسل مع ColorSpaceType المحددة.
void
load(الصورة النقطية للصورة النقطية)
لتحميل عنصر صورة Bitmap في TensorImage هذا.
void
load(int[] بكسل, int[] shape)
لتحميل صفيف صحيح على هيئة وحدات بكسل RGB في TensorImage، والتي تمثل وحدات البكسل بداخله.
void
load(float[] بكسل, int[] shape)
لتحميل مصفوفة عائمة على شكل وحدات بكسل RGB في TensorImage هذه، والتي تمثل وحدات البكسل داخلها.
void
load(التخزين المؤقت ByteBuffer وImageProperties imageProperties)
لتحميل ByteBuffer التي تحتوي على قيم البكسل مع ImageProperties المحددة.
void
load(المخزن المؤقت TensorBuffer، وImageProperties imageProperties)
لتحميل TensorBuffer التي تحتوي على قيم البكسل مع ImageProperties المحددة.
void
load(صورة من الصورة)
لتحميل كائن Image في TensorImage هذا.

الطرق المكتسَبة

الإنشاء العام

public TensorImage ()

تعمل هذه السياسة على إعداد كائن TensorImage.

ملاحظة: نوع البيانات لهذه السمة TensorImage هو DataType.UINT8. استخدِم TensorImage(DataType) إذا كان من الأفضل استخدام أنواع بيانات أخرى.

public TensorImage (DataType dataType)

تعمل هذه السياسة على إعداد كائن TensorImage بنوع البيانات المحدّد.

عند الحصول على TensorBuffer أو ByteBuffer من TensorImage، مثل استخدام getTensorBuffer() وgetBuffer()، سيتم تحويل قيم البيانات إلى نوع البيانات المحدّد.

ملاحظة: شكل TensorImage غير ثابت. ويمكن ضبطها على شكل الصورة التي يتم تحميلها على TensorImage هذا.

المَعلمات
dataType نوع البيانات المتوقع للسمة TensorBuffer الناتجة. ويكون النوع ثابتًا دائمًا خلال فترة استخدام TensorImage. لتحويل نوع البيانات، استخدِم createFrom(TensorImage, DataType) لإنشاء نسخة من البيانات وتحويلها في الوقت نفسه.
الرميات
IllegalArgumentException إذا لم يكن dataType هو DataType.UINT8 أو DataType.FLOAT32

الطرق العامة

public static TensorImage createFrom (TensorImage src, DataType dataType)

لإنشاء نسخة تفصيلية من TensorImage محدّد مع نوع البيانات المطلوب.

المَعلمات
src TensorImage للنسخ من
dataType نوع البيانات المتوقَّع لـ TensorImage التي تم إنشاؤها حديثًا
المرتجعات
  • TensorImage التي تم نسخ بياناتها من src ونوع البيانات dataType

public static TensorImage fromBitmap (صورة نقطية للصورة النقطية)

تعمل هذه السياسة على إعداد كائن TensorImage من DataType.UINT8 باستخدام Bitmap .

المَعلمات
صورة نقطية

public الصورة النقطية getBitmap ()

تعرض تمثيل Bitmap لـ TensorImage هذه.

سيتم تطبيق البث الرقمي والتثبيت إذا لم تكن البيانات المخزَّنة uint8.

لاحظ أن الطريقة الموثوق بها للحصول على وحدات البكسل من صورة نقطية ALPHA_8 هي استخدام copyPixelsToBuffer. لا تعمل طرق الصور النقطية، مثل `setPixels()` و `getPixels`.

ملاحظة مهمّة: إنّه مرجع فقط. يُرجى عدم التعديل. لا ننشئ نسخة هنا للمخاوف المتعلّقة بالأداء، ولكن إذا كان التعديل ضروريًا، يُرجى إنشاء نسخة.

المرتجعات
  • إشارة إلى Bitmap في إعدادات ARGB_8888 (تكون القناة "A" معتمة دائمًا) أو باللغة ALPHA_8، استنادًا إلى ColorSpaceType لـ TensorBuffer هذه.
الرميات
IllegalStateException إذا لم يتم تحميل البيانات من خلال TensorImage مطلقًا

public ByteBuffer getBuffer ()

تعرض تمثيل ByteBuffer لـ TensorImage هذا مع نوع البيانات المتوقّع.

سيتم تطبيق البث الرقمي والتثبيت إذا كانت البيانات المخزَّنة مختلفة عن نوع بيانات TensorImage.

ملاحظة مهمّة: إنّه مرجع فقط. يُرجى عدم التعديل. لا ننشئ نسخة هنا للمخاوف المتعلّقة بالأداء، ولكن إذا كان التعديل ضروريًا، يُرجى إنشاء نسخة.

إنه في الأساس اختصار لـ getTensorBuffer().getBuffer().

المرتجعات
  • إشارة إلى ByteBuffer التي تحتفظ ببيانات الصورة
الرميات
IllegalStateException إذا لم يتم تحميل البيانات من خلال TensorImage مطلقًا

public ColorSpaceType getColorSpaceType ()

الحصول على نوع مساحة اللون لجهاز TensorImage هذا.

الرميات
IllegalStateException إذا لم يتم تحميل البيانات من خلال TensorImage مطلقًا

public DataType getDataType ()

للحصول على نوع بيانات "TensorImage" هذا.

المرتجعات

public int getHeight ()

الحصول على ارتفاع الصورة.

الرميات
IllegalStateException إذا لم يتم تحميل البيانات من خلال TensorImage مطلقًا
IllegalArgumentException إذا كانت البيانات الأساسية تالفة

public صورة getMediaImage ()

تعرض تمثيل Image لـ TensorImage هذه.

لا تعمل هذه الطريقة إلا إذا كان TensorImage متوافقًا مع Image، ما يعني أنّه عليك أولاً تحميل Image إلى load(Image).

ملاحظة مهمّة: إنّه مرجع فقط. يُرجى عدم التعديل. لا ننشئ نسخة هنا للمخاوف المتعلّقة بالأداء، ولكن إذا كان التعديل ضروريًا، يُرجى إنشاء نسخة.

المرتجعات
  • إشارة إلى Bitmap في إعدادات ARGB_8888 (تكون القناة "A" معتمة دائمًا) أو باللغة ALPHA_8، استنادًا إلى ColorSpaceType لـ TensorBuffer هذه.
الرميات
IllegalStateException إذا لم يتم تحميل البيانات من خلال TensorImage مطلقًا

public TensorBuffer getTensorBuffer ()

تعرض تمثيل TensorBuffer لـ TensorImage هذا مع نوع البيانات المتوقّع.

سيتم تطبيق البث الرقمي والتثبيت إذا كانت البيانات المخزَّنة مختلفة عن نوع بيانات TensorImage.

ملاحظة مهمّة: إنّه مرجع فقط. يُرجى عدم التعديل. لا ننشئ نسخة هنا للمخاوف المتعلّقة بالأداء، ولكن إذا كان التعديل ضروريًا، يُرجى إنشاء نسخة.

المرتجعات
  • إشارة إلى TensorBuffer التي تحتفظ ببيانات الصورة
الرميات
IllegalStateException إذا لم يتم تحميل البيانات من خلال TensorImage مطلقًا

public int getWidth ()

للحصول على عرض الصورة.

الرميات
IllegalStateException إذا لم يتم تحميل البيانات من خلال TensorImage مطلقًا
IllegalArgumentException إذا كانت البيانات الأساسية تالفة

متاح للجميع إلغاء تحميل (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) للصور ذات الحجم الرمادي
colorSpaceType
الرميات
IllegalArgumentException إذا كان شكل المخزن المؤقت لا يتطابق مع نوع مساحة اللون، أو إذا كان نوع مساحة اللون غير متوافق

علني إلغاء تحميل (صورة نقطية)

لتحميل عنصر صورة Bitmap في TensorImage هذا.

ملاحظة: إذا كان TensorImage يحتوي على نوع بيانات غير DataType.UINT8، سيتم تطبيق البث الرقمي والتثبيت عند استدعاء getTensorBuffer() وgetBuffer()، حيث سيتم تحويل Bitmap إلى TensorBuffer.

هام: عند تحميل صورة نقطية، لا تقم بتعديل الصورة النقطية من جانب المتصل بعد الآن. سيعتمد الكائن TensorImage على الصورة النقطية. ومن المحتمل أن يعدّل الصورة النقطية أيضًا. في هذه الطريقة، نستخدم طريقة "بدون نسخة مطابقة" لهذه الصورة النقطية من خلال الاحتفاظ بمرجعها. استخدِم bitmap.copy(bitmap.getConfig(), true) لإنشاء نسخة عند الضرورة.

ملاحظة: للحصول على أفضل أداء، يُرجى تحميل الصور بالشكل نفسه لتجنُّب إعادة تخصيص الذاكرة.

المَعلمات
صورة نقطية
الرميات
IllegalArgumentException إذا لم يكن bitmap في ARGB_8888

متاح للجميع إلغاء تحميل (int[] بكسل، شكل int[])

لتحميل صفيف صحيح على هيئة وحدات بكسل RGB في TensorImage، والتي تمثل وحدات البكسل بداخله.

ملاحظة: سيتم تطبيق البث الرقمي والتثبيت لتحويل القيم إلى نوع بيانات TensorImage هذا عند استدعاء getTensorBuffer() وgetBuffer().

المَعلمات
بكسل وحدات بكسل RGB التي تمثل الصورة
shape شكل الصورة، يجب إما على شكل (h، w، 3)، أو على شكل (1، h، w، 3)
الرميات
IllegalArgumentException إذا لم يكن الشكل (h, w, 3) ولا (1, h, w, 3)

متاح للجميع إلغاء تحميل (وحدات بكسل عائمة[] بكسل، شكل عدد صحيح)

لتحميل مصفوفة عائمة على شكل وحدات بكسل RGB في TensorImage هذه، والتي تمثل وحدات البكسل داخلها.

ملاحظة: إذا كانت السمة TensorImage تتضمّن نوع بيانات غير DataType.FLOAT32، سيتم تطبيق البث الرقمي والتثبيت عند استدعاء getTensorBuffer() وgetBuffer().

المَعلمات
بكسل وحدات بكسل RGB التي تمثل الصورة
shape شكل الصورة، يجب إما على شكل (h، w، 3)، أو على شكل (1، h، w، 3)
الرميات
IllegalArgumentException إذا لم يكن الشكل (h, w, 3) ولا (1, h, w, 3)

عام إلغاء تحميل (ByteBuffer buffer, ImageProperties imageProperties)

لتحميل ByteBuffer التي تحتوي على قيم البكسل مع ImageProperties المحددة.

ملاحظة: إذا كان نوع بيانات buffer لا يتطابق مع نوع بيانات TensorImage هذا، سيتم تطبيق البث الرقمي والتثبيت عند استدعاء getTensorBuffer() وgetBuffer().

المَعلمات
المخزن المؤقت
imageProperties
الرميات
IllegalArgumentException إذا كان حجم المخزن المؤقت أقل من حجم الصورة المُشار إليه في ارتفاع الصورة وعرضها ونوع مساحة اللون في ImageProperties

متاح للجميع إبطال تحميل (TensorBuffer buffer، ImageProperties imageProperties)

لتحميل TensorBuffer التي تحتوي على قيم البكسل مع ImageProperties المحددة.

ولن يتم استخدام شكل TensorBuffer لتحديد ارتفاع الصورة وعرضها. يمكنك ضبط خصائص الصور من خلال ImageProperties.

ملاحظة: إذا كان نوع بيانات buffer لا يتطابق مع نوع بيانات TensorImage هذا، سيتم تطبيق البث الرقمي والتثبيت عند استدعاء getTensorBuffer() وgetBuffer().

المَعلمات
المخزن المؤقت
imageProperties
الرميات
IllegalArgumentException إذا كان حجم المخزن المؤقت أقل من حجم الصورة المُشار إليه في ارتفاع الصورة وعرضها ونوع مساحة اللون في ImageProperties

متاح للجميع إلغاء تحميل (صورة من الصورة)

لتحميل كائن Image في TensorImage هذا.

ويتمثل الاستخدام الرئيسي لهذه الطريقة في تحميل عنصر Image كإدخال نموذج إلى https://www.tensorflow.org/lite/inference_with_metadata/task_library/overview. TensorImage المدعوم من Image غير متوافق مع ImageProcessor.

* @throws UnusedArgumentException إذا لم يكن ImageFormat الخاص بالسمة image هو YUV_420_888

المَعلمات
صورة