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 แบบคงที่ | createFrom ( TensorImage src, DataType dataType) สร้างสำเนาเชิงลึกของ TensorImage ที่กำหนดพร้อมประเภทข้อมูลที่ต้องการ |
TensorImage แบบคงที่ | fromBitmap (บิตแมป บิตแมป) |
บิตแมป | รับบิตแมป () ส่งคืนการแสดง Bitmap ของ TensorImage นี้ |
ByteBuffer | รับบัฟเฟอร์ () ส่งคืนการแสดง ByteBuffer ของ TensorImage นี้พร้อมกับประเภทข้อมูลที่คาดหวัง |
ประเภทสีสเปซ | getColorSpaceType () รับประเภทพื้นที่สีของ TensorImage นี้ |
ประเภทข้อมูล | รับ DataType () รับประเภทข้อมูลของ TensorImage นี้ |
ภายใน | รับความสูง () รับความสูงของภาพ |
ภาพ | getMediaImage () ส่งคืนการแสดง Image ของ TensorImage นี้ |
TensorBuffer | รับเทนเซอร์บัฟเฟอร์ () ส่งคืนการแสดง TensorBuffer ของ TensorImage นี้พร้อมกับประเภทข้อมูลที่คาดหวัง |
ภายใน | รับความกว้าง () รับความกว้างของภาพ |
เป็นโมฆะ | โหลด (บัฟเฟอร์ TensorBuffer , ColorSpaceType colorSpaceType) โหลด TensorBuffer ที่มีค่าพิกเซลด้วย ColorSpaceType เฉพาะ |
เป็นโมฆะ | โหลด (บิตแมป บิตแมป) โหลดวัตถุรูปภาพ Bitmap ลงใน TensorImage นี้ |
เป็นโมฆะ | โหลด (int[] พิกเซล, int[] รูปร่าง) โหลดอาร์เรย์ int เป็นพิกเซล RGB ลงใน TensorImage นี้ ซึ่งแสดงถึงพิกเซลภายใน |
เป็นโมฆะ | โหลด (พิกเซลลอย[] รูปร่าง int[]) โหลดอาร์เรย์ float เป็นพิกเซล 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) เพื่อสร้างสำเนาและแปลงประเภทข้อมูลพร้อมกัน |
---|
ขว้าง
ข้อยกเว้นอาร์กิวเมนต์ที่ผิดกฎหมาย | ถ้า dataType ไม่ใช่ DataType.UINT8 หรือ DataType.FLOAT32 |
---|
วิธีการสาธารณะ
TensorImage สาธารณะคงที่ createFrom ( TensorImage src, DataType dataType)
สร้างสำเนาเชิงลึกของ TensorImage
ที่กำหนดพร้อมประเภทข้อมูลที่ต้องการ
พารามิเตอร์
src | TensorImage ที่จะคัดลอกมา |
---|---|
ประเภทข้อมูล | ประเภทข้อมูลที่คาดหวังของ TensorImage ที่สร้างขึ้นใหม่ |
การส่งคืน
-
TensorImage
ซึ่งข้อมูลถูกคัดลอกจากsrc
และประเภทข้อมูลคือdataType
TensorImage สาธารณะคงที่ จาก Bitmap (บิตแมปบิตแมป)
เริ่มต้นวัตถุ 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 ไม่เคยโหลดข้อมูล |
---|
ประเภทข้อมูล สาธารณะ getDataType ()
รับประเภทข้อมูลของ TensorImage
นี้
การส่งคืน
- ชนิดข้อมูล ปัจจุบันรองรับเฉพาะ
DataType.UINT8
และDataType.FLOAT32
เท่านั้น
สาธารณะ int getHeight ()
รับความสูงของภาพ
ขว้าง
IllegalStateException | หาก TensorImage ไม่เคยโหลดข้อมูล |
---|---|
ข้อยกเว้นอาร์กิวเมนต์ที่ผิดกฎหมาย | หากข้อมูลพื้นฐานเสียหาย |
รูปภาพสาธารณะ 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 ไม่เคยโหลดข้อมูล |
---|---|
ข้อยกเว้นอาร์กิวเมนต์ที่ผิดกฎหมาย | หากข้อมูลพื้นฐานเสียหาย |
โหลด โมฆะสาธารณะ (บัฟเฟอร์ 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
ลงใน TensorImage
นี้
หมายเหตุ: หาก TensorImage
มีประเภทข้อมูลอื่นที่ไม่ใช่ DataType.UINT8
การหล่อและการจับตัวเลขจะถูกใช้เมื่อเรียก getTensorBuffer()
และ getBuffer()
โดยที่ Bitmap
จะถูกแปลงเป็น TensorBuffer
สิ่งสำคัญ: เมื่อโหลดบิตแมป อย่าแก้ไขบิตแมปจากฝั่งผู้เรียกอีกต่อไป วัตถุ TensorImage
จะขึ้นอยู่กับบิตแมป มันอาจจะแก้ไขบิตแมปเช่นกัน ในวิธีนี้ เราทำแนวทางการคัดลอกเป็นศูนย์สำหรับบิตแมปนั้น โดยเพียงแค่เก็บการอ้างอิงไว้ ใช้ bitmap.copy(bitmap.getConfig(), true)
เพื่อสร้างสำเนาหากจำเป็น
หมายเหตุ: เพื่อให้ได้ประสิทธิภาพที่ดีที่สุด โปรดโหลดรูปภาพในรูปทรงเดียวกันเพื่อหลีกเลี่ยงการจัดสรรหน่วยความจำใหม่
พารามิเตอร์
บิตแมป |
---|
ขว้าง
ข้อยกเว้นอาร์กิวเมนต์ที่ผิดกฎหมาย | หาก bitmap ไม่ได้อยู่ใน ARGB_8888 |
---|
โหลด โมฆะสาธารณะ (int[] พิกเซล รูปร่าง int[])
โหลดอาร์เรย์ int เป็นพิกเซล RGB ลงใน TensorImage
นี้ ซึ่งแสดงถึงพิกเซลภายใน
หมายเหตุ: การหล่อแบบตัวเลขและการหนีบจะถูกใช้เพื่อแปลงค่าให้เป็นประเภทข้อมูลของ TensorImage
นี้เมื่อเรียกใช้ getTensorBuffer()
และ getBuffer()
พารามิเตอร์
พิกเซล | พิกเซล RGB ที่แสดงภาพ |
---|---|
รูปร่าง | รูปทรงของภาพควรเป็นแบบ (h, w, 3) หรือแบบ (1, h, w, 3) |
ขว้าง
ข้อยกเว้นอาร์กิวเมนต์ที่ผิดกฎหมาย | ถ้ารูปร่างไม่ใช่ทั้ง (h, w, 3) หรือ (1, h, w, 3) |
---|
โหลด โมฆะสาธารณะ (พิกเซลลอย [] รูปร่าง int [])
โหลดอาร์เรย์ float เป็นพิกเซล RGB ลงใน TensorImage
นี้ ซึ่งแสดงถึงพิกเซลภายใน
หมายเหตุ: หาก TensorImage
มีประเภทข้อมูลอื่นที่ไม่ใช่ DataType.FLOAT32
การหล่อแบบตัวเลขและการหนีบจะถูกนำมาใช้เมื่อเรียก getTensorBuffer()
และ getBuffer()
พารามิเตอร์
พิกเซล | พิกเซล RGB ที่แสดงภาพ |
---|---|
รูปร่าง | รูปทรงของภาพควรเป็นแบบ (h, w, 3) หรือแบบ (1, h, w, 3) |
ขว้าง
ข้อยกเว้นอาร์กิวเมนต์ที่ผิดกฎหมาย | ถ้ารูปร่างไม่ใช่ทั้ง (h, w, 3) หรือ (1, h, w, 3) |
---|
โหลด โมฆะสาธารณะ (บัฟเฟอร์ ByteBuffer , ImageProperties imageProperties)
โหลด ByteBuffer
ที่มีค่าพิกเซลด้วย ImageProperties
เฉพาะ
หมายเหตุ: หากประเภทข้อมูลของ buffer
ไม่ตรงกับประเภทข้อมูลของ TensorImage
นี้ ระบบจะใช้การหล่อและการหนีบตัวเลขเมื่อเรียก getTensorBuffer()
และ getBuffer()
พารามิเตอร์
กันชน | |
---|---|
คุณสมบัติของรูปภาพ |
ขว้าง
ข้อยกเว้นอาร์กิวเมนต์ที่ผิดกฎหมาย | หากขนาดบัฟเฟอร์น้อยกว่าขนาดรูปภาพที่ระบุโดยความสูง ความกว้าง และประเภทพื้นที่สีใน ImageProperties |
---|
โหลด โมฆะสาธารณะ (บัฟเฟอร์ TensorBuffer , ImageProperties imageProperties)
โหลด TensorBuffer
ที่มีค่าพิกเซลด้วย ImageProperties
เฉพาะ
รูปร่างของ TensorBuffer
จะไม่ถูกนำมาใช้เพื่อกำหนดความสูงและความกว้างของรูปภาพ ตั้งค่าคุณสมบัติรูปภาพผ่าน ImageProperties
หมายเหตุ: หากประเภทข้อมูลของ buffer
ไม่ตรงกับประเภทข้อมูลของ TensorImage
นี้ ระบบจะใช้การหล่อและการหนีบตัวเลขเมื่อเรียก getTensorBuffer()
และ getBuffer()
พารามิเตอร์
กันชน | |
---|---|
คุณสมบัติของรูปภาพ |
ขว้าง
ข้อยกเว้นอาร์กิวเมนต์ที่ผิดกฎหมาย | หากขนาดบัฟเฟอร์น้อยกว่าขนาดรูปภาพที่ระบุโดยความสูง ความกว้าง และประเภทพื้นที่สีใน 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
พารามิเตอร์
ภาพ |
---|