TensorImage کلاس wrapper برای آبجکت Image است. هنگام استفاده از ابزارهای پردازش تصویر در کتابخانه TFLite.support، در ابتدا تبدیل اشیاء تصویر در انواع مختلف به TensorImage معمول است.
در حال حاضر فقط تصاویر RGB پشتیبانی می شوند و کانال A همیشه نادیده گرفته می شود.
جزئیات ذخیره سازی داده ها: یک شی TensorImage
ممکن است 2 منبع بالقوه حقیقت داشته باشد: یک 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 را برمیگرداند. |
بایت بافر | getBuffer () یک نمایش ByteBuffer از این TensorImage با نوع داده مورد انتظار را برمیگرداند. |
ColorSpaceType | getColorSpaceType () نوع فضای رنگی این TensorImage را دریافت می کند. |
نوع داده | getDataType () نوع داده این TensorImage را دریافت می کند. |
بین المللی | دریافت قد () ارتفاع تصویر را دریافت می کند. |
تصویر | getMediaImage () یک نمایش Image از این TensorImage را برمیگرداند. |
TensorBuffer | getTensorBuffer () یک نمایش TensorBuffer از این TensorImage با نوع داده مورد انتظار را برمیگرداند. |
بین المللی | getWidth () عرض تصویر را دریافت می کند. |
خالی | بار (بافر TensorBuffer ، ColorSpaceType colorSpaceType) یک TensorBuffer حاوی مقادیر پیکسل را با ColorSpaceType خاص بارگیری می کند. |
خالی | بارگذاری (بیت مپ) یک شی تصویر Bitmap در این TensorImage بارگذاری می کند. |
خالی | بار (int[] پیکسل، int[] شکل) یک آرایه int را بهعنوان پیکسلهای RGB در این TensorImage بارگذاری میکند، که نشاندهنده پیکسلهای داخل است. |
خالی | بار (شکل شناور[] پیکسل، شکل درونی[]) یک آرایه شناور را به صورت پیکسل های RGB در این TensorImage بارگذاری می کند که نشان دهنده پیکسل های داخل آن است. |
خالی | بارگذاری (بافر ByteBuffer ، 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) استفاده کنید تا یک کپی ایجاد کنید و همزمان نوع داده را تبدیل کنید. |
---|
پرتاب می کند
IllegalArgumentException | اگر dataType نه DataType.UINT8 باشد و نه DataType.FLOAT32 |
---|
روش های عمومی
عمومی استاتیک TensorImage createFrom ( TensorImage src، DataType dataType)
یک کپی عمیق از یک TensorImage
داده شده با نوع داده مورد نظر ایجاد می کند.
مولفه های
src | TensorImage برای کپی کردن |
---|---|
نوع داده | نوع داده مورد انتظار TensorImage تازه ایجاد شده |
برمی گرداند
- یک
TensorImage
که اطلاعات آن ازsrc
کپی شده و نوع دادهdataType
است
TensorImage استاتیک عمومی از Bitmap (Bitmap Bitmap)
یک شی TensorImage
از DataType.UINT8
را با یک Bitmap
راه اندازی می کند.
مولفه های
بیت مپ |
---|
بیت مپ عمومی getBitmap ()
یک نمایش Bitmap
از این TensorImage
را برمیگرداند.
در صورتی که داده های ذخیره شده uint8 نباشند، ریخته گری و بستن عددی اعمال می شود.
توجه داشته باشید که راه قابل اعتماد برای دریافت پیکسل از ALPHA_8
Bitmap استفاده از copyPixelsToBuffer
است. روش های بیت مپ مانند «setPixels()» و «getPixels» کار نمی کنند.
مهم: این فقط یک مرجع است. اصلاح نکنید. ما در اینجا یک کپی برای نگرانی عملکرد ایجاد نمی کنیم، اما اگر اصلاح لازم است، لطفاً یک کپی تهیه کنید.
برمی گرداند
- یک مرجع به
Bitmap
در پیکربندیARGB_8888
(کانال "A" همیشه مات است) یا درALPHA_8
، بسته بهColorSpaceType
اینTensorBuffer
.
پرتاب می کند
IllegalStateException | اگر TensorImage هرگز داده ها را بارگذاری نمی کند |
---|
عمومی ByteBuffer getBuffer ()
یک نمایش ByteBuffer
از این TensorImage
با نوع داده مورد انتظار را برمیگرداند.
در صورتی که داده های ذخیره شده با نوع داده TensorImage
متفاوت باشد، ریخته گری و بستن عددی اعمال می شود.
مهم: این فقط یک مرجع است. اصلاح نکنید. ما در اینجا یک کپی برای نگرانی عملکرد ایجاد نمی کنیم، اما اگر اصلاح لازم است، لطفاً یک کپی تهیه کنید.
این در اصل یک میانبر برای getTensorBuffer().getBuffer()
است.
برمی گرداند
- یک مرجع به
ByteBuffer
که داده های تصویر را نگه می دارد
پرتاب می کند
IllegalStateException | اگر TensorImage هرگز داده ها را بارگذاری نمی کند |
---|
ColorSpaceType عمومی getColorSpaceType ()
نوع فضای رنگی این TensorImage
را دریافت می کند.
پرتاب می کند
IllegalStateException | اگر TensorImage هرگز داده ها را بارگذاری نمی کند |
---|
نوع داده عمومی getDataType ()
نوع داده این TensorImage
را دریافت می کند.
برمی گرداند
- یک نوع داده در حال حاضر فقط
DataType.UINT8
وDataType.FLOAT32
پشتیبانی می شوند.
عمومی int getHeight ()
ارتفاع تصویر را دریافت می کند.
پرتاب می کند
IllegalStateException | اگر TensorImage هرگز داده ها را بارگذاری نمی کند |
---|---|
IllegalArgumentException | اگر داده های اساسی خراب باشد |
تصویر عمومی getMediaImage ()
یک نمایش Image
از این TensorImage
را برمیگرداند.
این روش فقط زمانی کار می کند که TensorImage
توسط یک Image
پشتیبانی شود، به این معنی که ابتدا باید یک Image
از طریق load(Image)
بارگذاری کنید.
مهم: این فقط یک مرجع است. اصلاح نکنید. ما در اینجا یک کپی برای نگرانی عملکرد ایجاد نمی کنیم، اما اگر اصلاح لازم است، لطفاً یک کپی تهیه کنید.
برمی گرداند
- یک مرجع به
Bitmap
در پیکربندیARGB_8888
(کانال "A" همیشه مات است) یا درALPHA_8
، بسته بهColorSpaceType
اینTensorBuffer
.
پرتاب می کند
IllegalStateException | اگر TensorImage هرگز داده ها را بارگذاری نمی کند |
---|
عمومی TensorBuffer getTensorBuffer ()
یک نمایش TensorBuffer
از این TensorImage
با نوع داده مورد انتظار را برمیگرداند.
در صورتی که داده های ذخیره شده با نوع داده TensorImage
متفاوت باشد، ریخته گری و بستن عددی اعمال می شود.
مهم: این فقط یک مرجع است. اصلاح نکنید. ما در اینجا یک کپی برای نگرانی عملکرد ایجاد نمی کنیم، اما اگر اصلاح لازم است، لطفاً یک کپی تهیه کنید.
برمی گرداند
- یک مرجع به یک
TensorBuffer
که داده های تصویر را نگه می دارد
پرتاب می کند
IllegalStateException | اگر TensorImage هرگز داده ها را بارگذاری نمی کند |
---|
عمومی int getWidth ()
عرض تصویر را دریافت می کند.
پرتاب می کند
IllegalStateException | اگر TensorImage هرگز داده ها را بارگذاری نمی کند |
---|---|
IllegalArgumentException | اگر داده های اساسی خراب باشد |
بار خالی عمومی (بافر TensorBuffer ، ColorSpaceType colorSpaceType)
یک TensorBuffer
حاوی مقادیر پیکسل را با ColorSpaceType
خاص بارگیری می کند.
فقط ColorSpaceType.RGB
و ColorSpaceType.GRAYSCALE
را پشتیبانی می کند. از load(TensorBuffer, ImageProperties)
برای انواع فضای رنگی دیگر استفاده کنید.
توجه: اگر نوع داده buffer
با این TensorImage
مطابقت نداشته باشد، هنگام فراخوانی getTensorBuffer()
و getBuffer()
casting و clamping عددی اعمال می شود.
مولفه های
بافر | TensorBuffer که باید بارگذاری شود. شکل آن باید یا (h, w, 3) یا (1, h, w, 3) برای تصاویر RGB و یا (h, w) یا (1, h, w) برای تصاویر GRAYSCALE باشد. |
---|---|
colorSpaceType |
پرتاب می کند
IllegalArgumentException | اگر شکل بافر با نوع فضای رنگ مطابقت نداشته باشد، یا اگر نوع فضای رنگی پشتیبانی نشود |
---|
بار خالی عمومی (بیت مپ بیت مپ)
یک شی تصویر Bitmap
در این TensorImage
بارگذاری می کند.
توجه: اگر TensorImage
دارای نوع داده ای غیر از DataType.UINT8
باشد، هنگام فراخوانی getTensorBuffer()
و getBuffer()
که Bitmap
به TensorBuffer
تبدیل می شود، casting و clamping عددی اعمال می شود.
مهم: هنگام بارگیری بیت مپ، دیگر نقشه بیت را از سمت تماس گیرنده تغییر ندهید. شی TensorImage
به بیت مپ متکی است. احتمالاً بیت مپ را نیز اصلاح خواهد کرد. در این روش، ما یک رویکرد کپی صفر برای آن بیت مپ، به سادگی با نگه داشتن مرجع آن انجام می دهیم. در صورت لزوم از bitmap.copy(bitmap.getConfig(), true)
برای ایجاد یک کپی استفاده کنید.
توجه: برای دریافت بهترین عملکرد، لطفاً تصاویر را به همان شکل بارگذاری کنید تا از تخصیص مجدد حافظه جلوگیری شود.
مولفه های
بیت مپ |
---|
پرتاب می کند
IllegalArgumentException | اگر bitmap در ARGB_8888 نیست |
---|
بار خالی عمومی (int[] پیکسل، int[] شکل)
یک آرایه int را بهعنوان پیکسلهای RGB در این TensorImage
بارگذاری میکند، که نشاندهنده پیکسلهای داخل است.
توجه: هنگام فراخوانی getTensorBuffer()
و getBuffer()
برای تبدیل مقادیر به نوع داده این TensorImage
ریختهگری و بستن عددی اعمال میشود.
مولفه های
پیکسل ها | پیکسل های RGB که تصویر را نشان می دهند |
---|---|
شکل | شکل تصویر باید به شکل (h، w، 3)، یا به شکل (1، h، w، 3) باشد. |
پرتاب می کند
IllegalArgumentException | اگر شکل نه (h، w، 3) باشد و نه (1، h، w، 3) |
---|
بار خالی عمومی (فلوت[] پیکسل، شکل int[])
یک آرایه شناور را به صورت پیکسل های RGB در این TensorImage
بارگذاری می کند که نشان دهنده پیکسل های داخل آن است.
توجه: اگر TensorImage
نوع داده ای غیر از DataType.FLOAT32
داشته باشد، هنگام فراخوانی getTensorBuffer()
و getBuffer()
از ریخته گری و بستن عددی استفاده می شود.
مولفه های
پیکسل ها | پیکسل های RGB که تصویر را نشان می دهند |
---|---|
شکل | شکل تصویر باید به شکل (h، w، 3)، یا به شکل (1، h، w، 3) باشد. |
پرتاب می کند
IllegalArgumentException | اگر شکل نه (h، w، 3) باشد و نه (1، h، w، 3) |
---|
بار خالی عمومی (بافر ByteBuffer ، ImageProperties imageProperties)
یک ByteBuffer
حاوی مقادیر پیکسل را با ImageProperties
خاص بارگیری می کند.
توجه: اگر نوع داده buffer
با این TensorImage
مطابقت نداشته باشد، هنگام فراخوانی getTensorBuffer()
و getBuffer()
casting و clamping عددی اعمال می شود.
مولفه های
بافر | |
---|---|
imageProperties |
پرتاب می کند
IllegalArgumentException | اگر اندازه بافر کمتر از اندازه تصویر نشان داده شده با ارتفاع، عرض و نوع فضای رنگ در ImageProperties باشد |
---|
بار خالی عمومی (بافر TensorBuffer ، ImageProperties imageProperties)
یک TensorBuffer
حاوی مقادیر پیکسل را با ImageProperties
خاص بارگیری می کند.
شکل TensorBuffer
برای تعیین ارتفاع و عرض تصویر استفاده نخواهد شد. ویژگی های تصویر را از طریق ImageProperties
تنظیم کنید.
توجه: اگر نوع داده buffer
با این TensorImage
مطابقت نداشته باشد، هنگام فراخوانی getTensorBuffer()
و getBuffer()
casting و clamping عددی اعمال می شود.
مولفه های
بافر | |
---|---|
imageProperties |
پرتاب می کند
IllegalArgumentException | اگر اندازه بافر کمتر از اندازه تصویر نشان داده شده با ارتفاع، عرض و نوع فضای رنگ در ImageProperties باشد |
---|
بار خالی عمومی (تصویر تصویر)
یک شی Image
را در این TensorImage
بارگذاری می کند.
کاربرد اصلی این روش بارگذاری یک شی Image
به عنوان ورودی مدل در https://www.tensorflow.org/lite/inference_with_metadata/task_library/overview است. TensorImage
پشتیبانی شده توسط Image
توسط ImageProcessor
پشتیبانی نمی شود.
* اگر ImageFormat
image
YUV_420_888 نباشد، IllegalArgumentException را میاندازد
مولفه های
تصویر |
---|