ขอขอบคุณที่เข้าร่วม Google I/O ดูเซสชั่นทั้งหมดตามความต้องการ ดูตามความต้องการ

TensorImage

คลาสสาธารณะ TensorImage

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, ประเภท ข้อมูลประเภทข้อมูล)
สร้างสำเนาลึกของ TensorImage ที่กำหนดด้วยประเภทข้อมูลที่ต้องการ
เทนเซอร์อิมเมจ แบบคงที่
จาก บิตแมป (บิตแมปบิตแมป)
เริ่มต้นวัตถุ TensorImage ของ DataType.UINT8 ด้วย Bitmap
บิตแมป
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

พารามิเตอร์
ภาพ