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 | |
วิธีการสาธารณะ
เทนเซอร์อิมเมจ แบบคงที่ | createFrom ( TensorImage src, ประเภท ข้อมูลประเภทข้อมูล) สร้างสำเนาลึกของ TensorImage ที่กำหนดด้วยประเภทข้อมูลที่ต้องการ |
เทนเซอร์อิมเมจ แบบคงที่ | จาก บิตแมป (บิตแมปบิตแมป) |
บิตแมป | getBitmap () ส่งคืนการแสดง Bitmap ของ TensorImage นี้ |
ByteBuffer | รับบัฟเฟอร์ () ส่งกลับการแสดง ByteBuffer ของ TensorImage นี้ด้วยประเภทข้อมูลที่คาดไว้ |
ColorSpaceType | getColorSpaceType () รับประเภทปริภูมิสีของ TensorImage นี้ |
ประเภทข้อมูล | getDataType () รับชนิดข้อมูลของ TensorImage นี้ |
int | รับความสูง () รับความสูงของภาพ |
ภาพ | getMediaImage () ส่งกลับการ Image ของ TensorImage นี้ |
เทนเซอร์บัฟเฟอร์ | getTensorBuffer () ส่งกลับการแสดง TensorBuffer ของ TensorImage นี้ด้วยประเภทข้อมูลที่คาดไว้ |
int | รับความกว้าง () รับความกว้างของรูปภาพ |
โมฆะ | โหลด (บัฟเฟอร์ TensorBuffer , ColorSpaceType colorSpaceType) โหลด TensorBuffer ที่มีค่าพิกเซลด้วย ColorSpaceType เฉพาะ |
โมฆะ | โหลด (บิตแมปบิตแมป) โหลดวัตถุภาพ Bitmap ลงใน TensorImage นี้ |
โมฆะ | โหลด (int[] พิกเซล รูปร่าง int[]) โหลด int array เป็นพิกเซล RGB ลงใน TensorImage ซึ่งแสดงถึงพิกเซลภายใน |
โมฆะ | โหลด (float[] พิกเซล รูปร่าง int[]) โหลดอาร์เรย์แบบลอยเป็นพิกเซล 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 สาธารณะ แบบคงที่จาก บิตแมป (บิตแมปบิตแมป)
เริ่มต้นวัตถุ TensorImage
ของ DataType.UINT8
ด้วย Bitmap
พารามิเตอร์
บิตแมป |
---|
บิตแมปสาธารณะ getBitmap ()
ส่งคืนการแสดง Bitmap
ของ TensorImage
นี้
การหล่อตัวเลขและการหนีบจะถูกนำมาใช้หากข้อมูลที่เก็บไว้ไม่ใช่ uint8
โปรดทราบว่าวิธีที่เชื่อถือได้ในการรับพิกเซลจากบิตแมป ALPHA_8
คือการใช้ 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 ไม่เคยโหลดข้อมูล |
---|
DataType สาธารณะ getDataType ()
รับชนิดข้อมูลของ TensorImage
นี้
คืนสินค้า
- ชนิดข้อมูล ปัจจุบันรองรับเฉพาะ
DataType.UINT8
และDataType.FLOAT32
เท่านั้น
สาธารณะ int getHeight ()
รับความสูงของภาพ
ขว้าง
IllegalStateException | ถ้า TensorImage ไม่เคยโหลดข้อมูล |
---|---|
IllegalArgumentException | หากข้อมูลพื้นฐานเสียหาย |
ภาพสาธารณะ getMediaImage ()
ส่งกลับการ Image
ของ TensorImage
นี้
วิธีนี้ใช้ได้เฉพาะเมื่อ TensorImage
ได้รับการสนับสนุนโดย Image
ซึ่งหมายความว่าคุณต้องโหลด Image
through 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()
พารามิเตอร์
กันชน | 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
สำคัญ: เมื่อโหลดบิตแมป ห้ามแก้ไขบิตแมปจากฝั่งผู้โทรอีกต่อไป วัตถุ TensorImage
จะขึ้นอยู่กับบิตแมป มันอาจจะแก้ไขบิตแมปเช่นกัน ในวิธีนี้ เราใช้แนวทาง Zero-copy สำหรับบิตแมปนั้น โดยเพียงแค่ถือการอ้างอิง ใช้ bitmap.copy(bitmap.getConfig(), true)
เพื่อสร้างสำเนาหากจำเป็น
หมายเหตุ: เพื่อให้ได้ประสิทธิภาพสูงสุด โปรดโหลดรูปภาพในรูปทรงเดียวกันเพื่อหลีกเลี่ยงการจัดสรรหน่วยความจำใหม่
พารามิเตอร์
บิตแมป |
---|
ขว้าง
IllegalArgumentException | ถ้า bitmap ไม่อยู่ใน ARGB_8888 |
---|
โหลด โมฆะสาธารณะ (int[] พิกเซล รูปร่าง int[])
โหลด int array เป็นพิกเซล RGB ลงใน TensorImage
ซึ่งแสดงถึงพิกเซลภายใน
หมายเหตุ: การหล่อตัวเลขและการหนีบจะใช้ในการแปลงค่าเป็นประเภทข้อมูลของ TensorImage
นี้เมื่อเรียก getTensorBuffer()
และ getBuffer()
พารามิเตอร์
พิกเซล | พิกเซล RGB ที่แสดงภาพ |
---|---|
รูปร่าง | รูปร่างของรูปภาพควรอยู่ในรูปแบบ (h, w, 3) หรือในรูปแบบ (1, h, w, 3) |
ขว้าง
IllegalArgumentException | ถ้ารูปร่างไม่ใช่ทั้ง (h, w, 3) หรือ (1, h, w, 3) |
---|
โหลด โมฆะสาธารณะ (float[] พิกเซล รูปร่าง 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()
พารามิเตอร์
กันชน | |
---|---|
ภาพคุณสมบัติ |
ขว้าง
IllegalArgumentException | หากขนาดบัฟเฟอร์น้อยกว่าขนาดรูปภาพที่ระบุโดยความสูง ความกว้าง และประเภทพื้นที่สีใน ImageProperties |
---|
โหลด โมฆะสาธารณะ (บัฟเฟอร์ TensorBuffer , ImageProperties imageProperties)
โหลด TensorBuffer
ที่มีค่าพิกเซลด้วย ImageProperties
เฉพาะ
รูปร่างของ TensorBuffer
จะไม่ถูกนำมาใช้เพื่อกำหนดความสูงและความกว้างของรูปภาพ ตั้งค่าคุณสมบัติของรูปภาพผ่าน ImageProperties
หมายเหตุ: หากประเภทข้อมูลของ buffer
ไม่ตรงกับของ TensorImage
นี้ การแคสต์ตัวเลขและการแคลมป์จะถูกนำมาใช้เมื่อเรียก getTensorBuffer()
และ getBuffer()
พารามิเตอร์
กันชน | |
---|---|
ภาพคุณสมบัติ |
ขว้าง
IllegalArgumentException | หากขนาดบัฟเฟอร์น้อยกว่าขนาดรูปภาพที่ระบุโดยความสูง ความกว้าง และประเภทพื้นที่สีใน ImageProperties |
---|
โหลด โมฆะสาธารณะ (ภาพ)
โหลดวัตถุ Image
ลงใน TensorImage
นี้
การใช้งานหลักของวิธีนี้คือการโหลดวัตถุ Image
เป็นอินพุตโมเดลไปยัง https://www.tensorflow.org/lite/inference_with_metadata/task_library/overview ImageProcessor
ไม่รองรับ TensorImage
สนับสนุนโดย Image
* @throws IllegalArgumentException หาก ImageFormat
ของ image
ไม่ใช่ YUV_420_888
พารามิเตอร์
ภาพ |
---|