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)
|
| 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() và 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ề
TensorImagecó dữ liệu được sao chép từsrcvà loại dữ liệu làdataType
công khai tĩnh TensorImage fromBitmap (Bitmap bitmap)
Khởi động một đối tượng TensorImage của DataType.UINT8 bằng Bitmap .
Tham số
| 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
Bitmaptrong cấu hìnhARGB_8888(kênh "A" luôn không rõ ràng) hoặc trongALPHA_8, tuỳ thuộc vàoColorSpaceTypecủaTensorBuffernà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
ByteBufferlư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ề
- kiểu dữ liệu. Hiện tại, chúng tôi chỉ hỗ trợ
DataType.UINT8vàDataType.FLOAT32.
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
Bitmaptrong cấu hìnhARGB_8888(kênh "A" luôn không rõ ràng) hoặc trongALPHA_8, tuỳ thuộc vàoColorSpaceTypecủaTensorBuffernà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
TensorBufferlư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.RGB và ColorSpaceType.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() và 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() và 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() và 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() và 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() và 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() và 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 |
|---|