TensorImage

lớp công khai TensorImage

TensorImage là lớp trình bao bọc cho đối tượng Hình ảnh. Khi sử dụng các tiện ích xử lý hình ảnh trong thư viện TFLite.support, trước tiên, bạn nên chuyển đổi các đối tượng hình ảnh trong các loại biến thể sang TensorImage.

Hiện tại, chỉ hỗ trợ hình ảnh RGB và kênh A luôn bị bỏ qua.

Thông tin chi tiết về việc lưu trữ dữ liệu: một đối tượng TensorImage có thể có 2 nguồn đáng tin cậy tiềm năng: Bitmap hoặc TensorBuffer. TensorImage duy trì trạng thái và chỉ chuyển đổi một trạng thái sang thư mục kia khi cần. Một trường hợp sử dụng điển hình của TensorImage là tải hình ảnh Bitmap trước, sau đó xử lý hình ảnh đó bằng ImageProcessor. Cuối cùng, lấy ByteBuffer cơ bản của TensorBuffer rồi đưa hình ảnh đó vào trình phiên dịch TFLite.

LƯU Ý QUAN TRỌNG: để đạt được hiệu suất tốt nhất, TensorImage sẽ tránh sao chép dữ liệu bất cứ khi nào có thể. Do đó, tài sản này không sở hữu dữ liệu của mình. Phương thức gọi không được sửa đổi các đối tượng dữ liệu được truyền đến load(Bitmap) hoặc load(TensorBuffer, ColorSpaceType).

QUAN TRỌNG: tất cả các phương thức đều không được chứng minh là an toàn cho luồng.

Công trình công cộng

Hàm TensorImage()
Khởi động một đối tượng TensorImage.
TensorImage(Loại dữ liệu DataType)
Khởi động một đối tượng TensorImage với loại dữ liệu được chỉ định.

Phương thức công khai

tĩnh TensorImage
createFrom(TensorImage src, DataType dataType)
Tạo bản sao sâu của một TensorImage nhất định với loại dữ liệu mong muốn.
tĩnh TensorImage
fromBitmap(Bitmap bitmap)
Khởi động một đối tượng TensorImage của DataType.UINT8 bằng Bitmap .
Bitmap
Hàm getBitmap()
Trả về Bitmap đại diện của TensorImage này.
ByteBuffer
Hàm getBuffer()
Trả về giá trị biểu thị ByteBuffer của TensorImage này cùng với kiểu dữ liệu dự kiến.
ColorSpaceType
Hàm getColorSpaceType()
Lấy loại hệ màu của TensorImage này.
DataType
Hàm getDataType()
Lấy loại dữ liệu của TensorImage này.
int
getHeight()
Lấy chiều cao của hình ảnh.
Bài đăng có hình ảnh
Hàm getMediaImage()
Trả về Image đại diện của TensorImage này.
TensorBuffer
Hàm getTensorBuffer()
Trả về giá trị biểu thị TensorBuffer của TensorImage này cùng với kiểu dữ liệu dự kiến.
int
getWidth()
Lấy chiều rộng của hình ảnh.
void
tải(vùng đệm TensorBuffer, ColorSpaceType colorSpaceType)
Tải một TensorBuffer chứa các giá trị pixel bằng ColorSpaceType cụ thể.
void
tải(Bitmap bitmap)
Tải một đối tượng hình ảnh Bitmap vào TensorImage này.
void
load(int[] pixel, int[] hình)
Tải một mảng int dưới dạng pixel RGB vào TensorImage này, đại diện cho các pixel bên trong.
void
tải(số thực[] pixel, hình dạng int[])
Tải một mảng nổi dưới dạng pixel RGB vào TensorImage này, đại diện cho các pixel bên trong.
void
load(vùng đệm ByteBuffer, ImageProperties imageProperties)
Tải một ByteBuffer chứa các giá trị pixel bằng ImageProperties cụ thể.
void
load(vùng đệm TensorBuffer, ImageProperties imageProperties)
Tải một TensorBuffer chứa các giá trị pixel bằng ImageProperties cụ thể.
void
load(Hình ảnh)
Tải một đối tượng Image vào TensorImage này.

Các phương thức kế thừa

Công trình công cộng

công khai TensorImage ()

Khởi động một đối tượng TensorImage.

Lưu ý: loại dữ liệu của TensorImage này là DataType.UINT8. Hãy sử dụng TensorImage(DataType) nếu bạn ưu tiên các loại dữ liệu khác.

công khai TensorImage (DataType dataType)

Khởi động một đối tượng TensorImage với loại dữ liệu được chỉ định.

Khi nhận TensorBuffer hoặc ByteBuffer từ TensorImage này, chẳng hạn như sử dụng getTensorBuffer()getBuffer(), các giá trị dữ liệu sẽ được chuyển đổi thành kiểu dữ liệu được chỉ định.

Lưu ý: hình dạng của TensorImage là không cố định. Bạn có thể điều chỉnh hình ảnh này theo hình dạng của hình ảnh được tải vào TensorImage này.

Tham số
dataType loại dữ liệu dự kiến của TensorBuffer thu được. Kiểu này luôn được cố định trong suốt thời gian hoạt động của TensorImage. Để chuyển đổi loại dữ liệu, hãy sử dụng createFrom(TensorImage, DataType) để tạo bản sao và chuyển đổi loại dữ liệu cùng lúc.
Gửi
IllegalArgumentException nếu dataType không phải là DataType.UINT8 hoặc DataType.FLOAT32

Phương thức công khai

công khai tĩnh TensorImage createFrom (TensorImage src, DataType dataType)

Tạo bản sao sâu của một TensorImage nhất định với loại dữ liệu mong muốn.

Tham số
src TensorImage để sao chép từ
dataType loại dữ liệu dự kiến của TensorImage mới được tạo
Giá trị trả về
  • TensorImage có dữ liệu được sao chép từ src và loại dữ liệu là dataType

công khai tĩnh TensorImage fromBitmap (Bitmap bitmap)

công khai Bitmap getBitmap ()

Trả về Bitmap đại diện của TensorImage này.

Quy trình truyền và kẹp số sẽ được áp dụng nếu dữ liệu đã lưu trữ không phải là uint8.

Lưu ý rằng cách đáng tin cậy để lấy pixel từ Bitmap ALPHA_8 là sử dụng copyPixelsToBuffer. Các phương thức Bitmap như "setPixels()" và "getPixels" không hoạt động.

Lưu ý quan trọng: đây chỉ là tài liệu tham khảo. KHÔNG CHỈNH SỬA. Chúng tôi không tạo bản sao ở đây vì vấn đề về hiệu suất, nhưng nếu cần sửa đổi, vui lòng tạo một bản sao.

Giá trị trả về
  • mục tham chiếu đến một Bitmap trong cấu hình ARGB_8888 (kênh "A" luôn không rõ ràng) hoặc trong ALPHA_8, tuỳ thuộc vào ColorSpaceType của TensorBuffer này.
Gửi
IllegalStateException nếu TensorImage không bao giờ tải dữ liệu

công khai ByteBuffer getBuffer ()

Trả về giá trị biểu thị ByteBuffer của TensorImage này cùng với kiểu dữ liệu dự kiến.

Chế độ truyền và kẹp số sẽ được áp dụng nếu dữ liệu đã lưu trữ khác với loại dữ liệu của TensorImage.

Lưu ý quan trọng: đây chỉ là tài liệu tham khảo. KHÔNG CHỈNH SỬA. Chúng tôi không tạo bản sao ở đây vì vấn đề về hiệu suất, nhưng nếu cần sửa đổi, vui lòng tạo một bản sao.

Về cơ bản, đây là đoạn ngắn của getTensorBuffer().getBuffer().

Giá trị trả về
  • tham chiếu đến ByteBuffer lưu giữ dữ liệu hình ảnh
Gửi
IllegalStateException nếu TensorImage không bao giờ tải dữ liệu

công khai ColorSpaceType getColorSpaceType ()

Lấy loại hệ màu của TensorImage này.

Gửi
IllegalStateException nếu TensorImage không bao giờ tải dữ liệu

công khai DataType getDataType ()

Lấy loại dữ liệu của TensorImage này.

Giá trị trả về

công khai int getHeight ()

Lấy chiều cao của hình ảnh.

Gửi
IllegalStateException nếu TensorImage không bao giờ tải dữ liệu
IllegalArgumentException nếu dữ liệu cơ bản bị hỏng

công khai Hình ảnh getMediaImage ()

Trả về Image đại diện của TensorImage này.

Phương thức này chỉ hoạt động khi TensorImage được Image hỗ trợ, nghĩa là trước tiên, bạn cần tải Image thông qua load(Image).

Lưu ý quan trọng: đây chỉ là tài liệu tham khảo. KHÔNG CHỈNH SỬA. Chúng tôi không tạo bản sao ở đây vì vấn đề về hiệu suất, nhưng nếu cần sửa đổi, vui lòng tạo một bản sao.

Giá trị trả về
  • mục tham chiếu đến một Bitmap trong cấu hình ARGB_8888 (kênh "A" luôn không rõ ràng) hoặc trong ALPHA_8, tuỳ thuộc vào ColorSpaceType của TensorBuffer này.
Gửi
IllegalStateException nếu TensorImage không bao giờ tải dữ liệu

công khai TensorBuffer getTensorBuffer ()

Trả về giá trị biểu thị TensorBuffer của TensorImage này cùng với kiểu dữ liệu dự kiến.

Chế độ truyền và kẹp số sẽ được áp dụng nếu dữ liệu đã lưu trữ khác với loại dữ liệu của TensorImage.

Lưu ý quan trọng: đây chỉ là tài liệu tham khảo. KHÔNG CHỈNH SỬA. Chúng tôi không tạo bản sao ở đây vì vấn đề về hiệu suất, nhưng nếu cần sửa đổi, vui lòng tạo một bản sao.

Giá trị trả về
  • tham chiếu đến TensorBuffer lưu giữ dữ liệu hình ảnh
Gửi
IllegalStateException nếu TensorImage không bao giờ tải dữ liệu

Public int getWidth ()

Lấy chiều rộng của hình ảnh.

Gửi
IllegalStateException nếu TensorImage không bao giờ tải dữ liệu
IllegalArgumentException nếu dữ liệu cơ bản bị hỏng

công khai vô hiệu tải (TensorBuffer đệm, ColorSpaceType colorSpaceType)

Tải một TensorBuffer chứa các giá trị pixel bằng ColorSpaceType cụ thể.

Chỉ hỗ trợ ColorSpaceType.RGBColorSpaceType.GRAYSCALE. Sử dụng load(TensorBuffer, ImageProperties) cho các loại không gian màu khác.

Lưu ý: nếu loại dữ liệu của buffer không khớp với loại dữ liệu của TensorImage này, thì tính năng truyền và kẹp số sẽ được áp dụng khi gọi getTensorBuffer()getBuffer().

Tham số
bộ đệm TensorBuffer sẽ được tải. Hình dạng của chế độ này phải là (h, w, 3) hoặc (1, h, w, 3) đối với ảnh RGB và (h, w) hoặc (1, h, w) đối với ảnh GRAYSCALE
colorSpaceType
Gửi
IllegalArgumentException nếu hình dạng của vùng đệm không phù hợp với kiểu hệ màu hoặc nếu kiểu hệ màu không được hỗ trợ

công khai void load (Bitmap bitmap)

Tải một đối tượng hình ảnh Bitmap vào TensorImage này.

Lưu ý: nếu TensorImage có loại dữ liệu không phải là DataType.UINT8, thì tính năng truyền và kẹp số sẽ được áp dụng khi gọi getTensorBuffer()getBuffer(), trong đó Bitmap sẽ được chuyển đổi thành TensorBuffer.

Lưu ý quan trọng: khi tải bitmap, KHÔNG chỉnh sửa bitmap từ phía phương thức gọi nữa. Đối tượng TensorImage sẽ dựa vào bitmap. Thao tác này cũng có thể sửa đổi bitmap. Trong phương thức này, chúng ta thực hiện phương pháp không sao chép cho bitmap đó, đơn giản bằng cách giữ lại tệp tham chiếu của bitmap đó. Sử dụng bitmap.copy(bitmap.getConfig(), true) để tạo bản sao nếu cần.

Lưu ý: để có hiệu suất tốt nhất, vui lòng tải các hình ảnh có cùng hình dạng để tránh việc phân bổ lại bộ nhớ.

Tham số
bitmap
Gửi
IllegalArgumentException nếu bitmap không có trong ARGB_8888

công khai void load (int[] pixel, int[] shape)

Tải một mảng int dưới dạng pixel RGB vào TensorImage này, đại diện cho các pixel bên trong.

Lưu ý: tính năng truyền và kẹp số sẽ được áp dụng để chuyển đổi các giá trị thành loại dữ liệu của TensorImage này khi gọi getTensorBuffer()getBuffer().

Tham số
pixel pixel RGB biểu thị hình ảnh
hình dạng hình dạng của ảnh, phải ở dạng (h, w, 3) hoặc (1, h, w, 3)
Gửi
IllegalArgumentException nếu hình dạng không phải (h, w, 3) hoặc (1, h, w, 3)

công khai void load (float[] pixel, int[] shape)

Tải một mảng nổi dưới dạng pixel RGB vào TensorImage này, đại diện cho các pixel bên trong.

Lưu ý: nếu TensorImage có một loại dữ liệu không phải là DataType.FLOAT32, thì tính năng truyền và kẹp số sẽ được áp dụng khi gọi getTensorBuffer()getBuffer().

Tham số
pixel pixel RGB biểu thị hình ảnh
hình dạng hình dạng của ảnh, phải ở dạng (h, w, 3) hoặc (1, h, w, 3)
Gửi
IllegalArgumentException nếu hình dạng không phải (h, w, 3) hoặc (1, h, w, 3)

công khai void load (ByteBuffer vùng đệm, ImageProperties imageProperties)

Tải một ByteBuffer chứa các giá trị pixel bằng ImageProperties cụ thể.

Lưu ý: nếu loại dữ liệu của buffer không khớp với loại dữ liệu của TensorImage này, thì tính năng truyền và kẹp số sẽ được áp dụng khi gọi getTensorBuffer()getBuffer().

Tham số
bộ đệm
imageProperties
Gửi
IllegalArgumentException nếu kích thước vùng đệm nhỏ hơn kích thước hình ảnh được biểu thị bằng chiều cao, chiều rộng và loại không gian màu của hình ảnh trong ImageProperties

công khai trống load (TensorBuffer đệm, ImageProperties imageProperties)

Tải một TensorBuffer chứa các giá trị pixel bằng ImageProperties cụ thể.

Hình dạng của TensorBuffer sẽ không được dùng để xác định chiều cao và chiều rộng của hình ảnh. Đặt các thuộc tính hình ảnh thông qua ImageProperties.

Lưu ý: nếu loại dữ liệu của buffer không khớp với loại dữ liệu của TensorImage này, thì tính năng truyền và kẹp số sẽ được áp dụng khi gọi getTensorBuffer()getBuffer().

Tham số
bộ đệm
imageProperties
Gửi
IllegalArgumentException nếu kích thước vùng đệm nhỏ hơn kích thước hình ảnh được biểu thị bằng chiều cao, chiều rộng và loại không gian màu của hình ảnh trong ImageProperties

công khai khoảng trống load (Hình ảnh)

Tải một đối tượng Image vào TensorImage này.

Mục đích sử dụng chính của phương thức này là tải một đối tượng Image làm dữ liệu đầu vào cho mô hình https://www.tensorflow.org/lite/inference_with_metadata/task_library/overview. TensorImage do Image hỗ trợ không được ImageProcessor hỗ trợ.

* @throws IllegalArgumentException nếu ImageFormat của image không phải là YUV_420_888

Tham số
hình ảnh