TensorImage کلاس wrapper برای آبجکت Image است. هنگام استفاده از ابزارهای پردازش تصویر در کتابخانه TFLite.support، در ابتدا تبدیل اشیاء تصویر در انواع مختلف به TensorImage معمول است.
در حال حاضر فقط تصاویر RGB پشتیبانی می شوند و کانال A همیشه نادیده گرفته می شود.
جزئیات ذخیره سازی داده ها: یک شی TensorImage
ممکن است 2 منبع بالقوه حقیقت داشته باشد: یک Bitmap
یا یک TensorBuffer
. TensorImage
حالت را حفظ می کند و تنها در صورت نیاز یکی را به دیگری تبدیل می کند. یک مورد معمول استفاده از TensorImage
این است که ابتدا یک تصویر Bitmap
را بارگذاری کنید، سپس آن را با استفاده از ImageProcessor
پردازش کنید، و در نهایت ByteBuffer زیربنایی 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
پشتیبانی نمی شود.
* اگر image
ImageFormat
نباشد، @ را IllegalArgumentException میاندازد
مولفه های
تصویر |
---|