TensorImage là lớp bao bọc cho đối tượng Image. Khi sử dụng các tiện ích xử lý hình ảnh trong thư viện TFLite.support, việc chuyển đổi các đối tượng hình ảnh ở các loại biến thể thành TensorImage lúc đầu là điều phổ biến.
Hiện tại, chỉ hỗ trợ hình ảnh RGB và kênh A luôn bị bỏ qua.
Chi tiết về lưu trữ dữ liệu: một đối tượng TensorImage
có thể có 2 nguồn sự thật tiềm năng: Bitmap
hoặc TensorBuffer
. TensorImage
duy trì trạng thái và chỉ chuyển đổi trạng thái này sang trạng thái khác khi cần. Trường hợp sử dụng điển hình của TensorImage
là trước tiên tải hình ảnh Bitmap
, sau đó xử lý nó bằng ImageProcessor
và cuối cùng lấy ByteBuffer
cơ bản của TensorBuffer
và đưa nó vào trình thông dịch TFLite.
QUAN TRỌNG: để đạt được hiệu suất tốt nhất, TensorImage
tránh sao chép dữ liệu bất cứ khi nào có thể. Vì vậy, nó không sở hữu dữ liệu của nó. Người gọi không nên sửa đổi các đối tượng dữ liệu được chuyển tới load(Bitmap)
hoặc load(TensorBuffer, ColorSpaceType)
.
QUAN TRỌNG: tất cả các phương pháp đều không được chứng minh là an toàn theo luồng.
Nhà xây dựng công cộng
TenorImage () Khởi tạo một đối tượng TensorImage . | |
TensorImage ( Kiểu dữ liệu kiểu dữ liệu) Khởi tạo một đối tượng TensorImage với kiểu dữ liệu được chỉ định. |
Phương pháp công khai
TensorImage tĩnh | createFrom ( TensorImage src, DataType dataType) Tạo bản sao sâu của TensorImage nhất định với kiểu dữ liệu mong muốn. |
TensorImage tĩnh | fromBitmap (bitmap bitmap) |
Bản đồ bit | getBitmap () Trả về bản trình bày Bitmap của TensorImage này. |
Bộ đệm byte | getBuffer () Trả về biểu diễn ByteBuffer của TensorImage này với kiểu dữ liệu dự kiến. |
MàuKhông gianLoại | getColorSpaceType () Lấy loại không gian màu của TensorImage này. |
Loại dữ liệu | getDataType () Lấy kiểu dữ liệu của TensorImage này. |
int | getHeight () Lấy chiều cao của hình ảnh. |
Hình ảnh | getMediaImage () Trả về một Image đại diện cho TensorImage này. |
Bộ đệm Tensor | getTensorBuffer () Trả về biểu diễn TensorBuffer của TensorImage này với kiểu dữ liệu dự kiến. |
int | getWidth () Lấy chiều rộng hình ảnh. |
trống rỗng | tải (Bộ đệm TensorBuffer , ColorSpaceType colorSpaceType) Tải TensorBuffer chứa các giá trị pixel với ColorSpaceType cụ thể. |
trống rỗng | tải (bitmap bitmap) Tải một đối tượng hình ảnh Bitmap vào TensorImage này. |
trống rỗng | tải (int[] pixel, hình dạng int[]) Tải một mảng int dưới dạng pixel RGB vào TensorImage này, biểu thị các pixel bên trong. |
trống rỗng | tải (float[] pixel, hình dạng int[]) Tải một mảng float dưới dạng pixel RGB vào TensorImage này, đại diện cho các pixel bên trong. |
trống rỗng | tải (Bộ đệm ByteBuffer , ImageProperties imageProperties) Tải ByteBuffer chứa các giá trị pixel với ImageProperties cụ thể. |
trống rỗng | tải (Bộ đệm TensorBuffer , ImageProperties imageProperties) Tải TensorBuffer chứa các giá trị pixel với ImageProperties cụ thể. |
trống rỗng | tải (Hình ảnh hình ảnh) Tải một đối tượng Image vào TensorImage này. |
Phương pháp kế thừa
Nhà xây dựng công cộng
TensorImage công khai ()
Khởi tạo một đối tượng TensorImage
.
Lưu ý: kiểu dữ liệu của TensorImage
này là DataType.UINT8
. Sử dụng TensorImage(DataType)
nếu các loại dữ liệu khác được ưu tiên.
TensorImage công khai ( DataType dataType)
Khởi tạo một đối tượng TensorImage
với kiểu dữ liệu được chỉ định.
Khi nhận được 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 loại dữ liệu được chỉ định.
Lưu ý: hình dạng của TensorImage
không cố định. Nó có thể được điều chỉnh theo hình dạng của hình ảnh đang được tải lên TensorImage
này.
Thông số
loại dữ liệu | kiểu dữ liệu dự kiến của TensorBuffer kết quả. Loại này luôn được cố định trong suốt thời gian tồn tại của TensorImage . Để chuyển đổi kiểu dữ liệu, hãy sử dụng createFrom(TensorImage, DataType) để tạo bản sao và chuyển đổi kiểu dữ liệu cùng một lúc. |
---|
Ném
Ngoại lệ Đối số bất hợp pháp | nếu dataType không phải là DataType.UINT8 hay DataType.FLOAT32 |
---|
Phương pháp công khai
công khai tĩnh TensorImage createFrom ( TensorImage src, DataType dataType)
Tạo bản sao sâu của TensorImage
nhất định với kiểu dữ liệu mong muốn.
Thông số
src | TensorImage để sao chép từ |
---|---|
loại dữ liệu | kiểu dữ liệu dự kiến của TensorImage mới được tạo |
Trả lại
- một
TensorImage
có dữ liệu được sao chép từsrc
và kiểu dữ liệu làdataType
TensorImage tĩnh công khai từBitmap (Bitmap bitmap)
Khởi tạo đối tượng TensorImage
của DataType.UINT8
bằng Bitmap
.
Thông số
ảnh bitmap |
---|
bitmap công khai getBitmap ()
Trả về bản trình bày Bitmap
của TensorImage
này.
Việc truyền và kẹp số sẽ được áp dụng nếu dữ liệu được 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.
Quan trọng: nó chỉ là một tài liệu tham khảo. KHÔNG SỬA ĐỔI. Chúng tôi không tạo bản sao ở đây vì lý do hiệu suất, nhưng nếu cần sửa đổi, vui lòng tạo một bản sao.
Trả lại
- tham chiếu đến
Bitmap
trong cấu hìnhARGB_8888
(kênh "A" luôn mờ) hoặc trongALPHA_8
, tùy thuộc vàoColorSpaceType
củaTensorBuffer
này.
Ném
Ngoại lệ nhà nước bất hợp pháp | nếu TensorImage không bao giờ tải dữ liệu |
---|
getBuffer ByteBuffer công khai ()
Trả về biểu diễn ByteBuffer
của TensorImage
này với kiểu dữ liệu dự kiến.
Việc truyền và kẹp số sẽ được áp dụng nếu dữ liệu được lưu trữ khác với kiểu dữ liệu của TensorImage
.
Quan trọng: nó chỉ là một tài liệu tham khảo. KHÔNG SỬA ĐỔI. Chúng tôi không tạo bản sao ở đây vì lý do 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à cách viết tắt của getTensorBuffer().getBuffer()
.
Trả lại
- tham chiếu đến
ByteBuffer
chứa dữ liệu hình ảnh
Ném
Ngoại lệ nhà nước bất hợp pháp | nếu TensorImage không bao giờ tải dữ liệu |
---|
ColorSpaceType công khai getColorSpaceType ()
Lấy loại không gian màu của TensorImage
này.
Ném
Ngoại lệ nhà nước bất hợp pháp | nếu TensorImage không bao giờ tải dữ liệu |
---|
Kiểu dữ liệu công khai getDataType ()
Lấy kiểu dữ liệu của TensorImage
này.
Trả lại
- một kiểu dữ liệu. Hiện tại chỉ hỗ trợ
DataType.UINT8
vàDataType.FLOAT32
.
int công khai getHeight ()
Lấy chiều cao của hình ảnh.
Ném
Ngoại lệ nhà nước bất hợp pháp | nếu TensorImage không bao giờ tải dữ liệu |
---|---|
Ngoại lệ Đối số bất hợp pháp | nếu dữ liệu cơ bản bị hỏng |
Hình ảnh công khai getMediaImage ()
Trả về một Image
đại diện cho TensorImage
này.
Phương pháp này chỉ hoạt động khi TensorImage
được hỗ trợ bởi Image
, nghĩa là trước tiên bạn cần tải Image
thông qua load(Image)
.
Quan trọng: nó chỉ là một tài liệu tham khảo. KHÔNG SỬA ĐỔI. Chúng tôi không tạo bản sao ở đây vì lý do hiệu suất, nhưng nếu cần sửa đổi, vui lòng tạo một bản sao.
Trả lại
- tham chiếu đến
Bitmap
trong cấu hìnhARGB_8888
(kênh "A" luôn mờ) hoặc trongALPHA_8
, tùy thuộc vàoColorSpaceType
củaTensorBuffer
này.
Ném
Ngoại lệ nhà nước bất hợp pháp | nếu TensorImage không bao giờ tải dữ liệu |
---|
công khai TensorBuffer getTensorBuffer ()
Trả về biểu diễn TensorBuffer
của TensorImage
này với kiểu dữ liệu dự kiến.
Việc truyền và kẹp số sẽ được áp dụng nếu dữ liệu được lưu trữ khác với kiểu dữ liệu của TensorImage
.
Quan trọng: nó chỉ là một tài liệu tham khảo. KHÔNG SỬA ĐỔI. Chúng tôi không tạo bản sao ở đây vì lý do hiệu suất, nhưng nếu cần sửa đổi, vui lòng tạo một bản sao.
Trả lại
- một tham chiếu đến
TensorBuffer
chứa dữ liệu hình ảnh
Ném
Ngoại lệ nhà nước bất hợp pháp | nếu TensorImage không bao giờ tải dữ liệu |
---|
int công khai getWidth ()
Lấy chiều rộng hình ảnh.
Ném
Ngoại lệ nhà nước bất hợp pháp | nếu TensorImage không bao giờ tải dữ liệu |
---|---|
Ngoại lệ Đối số bất hợp pháp | nếu dữ liệu cơ bản bị hỏng |
tải khoảng trống công khai (Bộ đệm TensorBuffer , ColorSpaceType colorSpaceType)
Tải TensorBuffer
chứa các giá trị pixel với 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 kiểu dữ liệu của buffer
không khớp với kiểu dữ liệu của TensorImage
này, việc truyền và kẹp số sẽ được áp dụng khi gọi getTensorBuffer()
và getBuffer()
.
Thông số
đệm | TensorBuffer sẽ được tải. Hình dạng của nó phải là (h, w, 3) hoặc (1, h, w, 3) đối với hình ảnh RGB và (h, w) hoặc (1, h, w) đối với hình ảnh GRAYSCALE |
---|---|
màuSpaceType |
Ném
Ngoại lệ Đối số bất hợp pháp | nếu hình dạng của bộ đệm không khớp với loại không gian màu hoặc nếu loại không gian màu không được hỗ trợ |
---|
tải khoảng trống công khai (bitmap bitmap)
Tải một đối tượng hình ảnh Bitmap
vào TensorImage
này.
Lưu ý: nếu TensorImage
có kiểu dữ liệu khác với DataType.UINT8
, việc 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
.
Quan trọng: khi tải bitmap, KHÔNG SỬA ĐỔI bitmap từ phía người gọi nữa. Đối tượng TensorImage
sẽ dựa vào bitmap. Nó có thể cũng sẽ sửa đổi bitmap. Trong phương pháp này, chúng tôi thực hiện phương pháp không sao chép cho bitmap đó, bằng cách chỉ cần giữ tham chiếu của nó. 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 hình ảnh có cùng hình dạng để tránh việc cấp lại bộ nhớ.
Thông số
ảnh bitmap |
---|
Ném
Ngoại lệ Đối số bất hợp pháp | nếu bitmap không có trong ARGB_8888 |
---|
tải khoảng trống công khai (int[] pixel, hình dạng int[])
Tải một mảng int dưới dạng pixel RGB vào TensorImage
này, biểu thị các pixel bên trong.
Lưu ý: việc truyền và kẹp số sẽ được áp dụng để chuyển đổi các giá trị thành kiểu dữ liệu của TensorImage
này khi gọi getTensorBuffer()
và getBuffer()
.
Thông số
điểm ảnh | các pixel RGB đại diện cho hình ảnh |
---|---|
hình dạng | hình dạng của hình ảnh phải ở dạng (h, w, 3) hoặc ở dạng (1, h, w, 3) |
Ném
Ngoại lệ Đối số bất hợp pháp | nếu hình dạng không phải là (h, w, 3) hay (1, h, w, 3) |
---|
tải khoảng trống công khai (float[] pixel, hình dạng int[])
Tải một mảng float 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ó kiểu dữ liệu khác DataType.FLOAT32
, việc truyền và kẹp số sẽ được áp dụng khi gọi getTensorBuffer()
và getBuffer()
.
Thông số
điểm ảnh | các pixel RGB đại diện cho hình ảnh |
---|---|
hình dạng | hình dạng của hình ảnh phải ở dạng (h, w, 3) hoặc ở dạng (1, h, w, 3) |
Ném
Ngoại lệ Đối số bất hợp pháp | nếu hình dạng không phải là (h, w, 3) hay (1, h, w, 3) |
---|
tải khoảng trống công khai (bộ đệm ByteBuffer , ImageProperties imageProperties)
Tải ByteBuffer
chứa các giá trị pixel với ImageProperties
cụ thể.
Lưu ý: nếu kiểu dữ liệu của buffer
không khớp với kiểu dữ liệu của TensorImage
này, việc truyền và kẹp số sẽ được áp dụng khi gọi getTensorBuffer()
và getBuffer()
.
Thông số
đệm | |
---|---|
thuộc tính hình ảnh |
Ném
Ngoại lệ Đối số bất hợp pháp | nếu kích thước bộ đệ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 |
---|
tải khoảng trống công khai (bộ đệm TensorBuffer , ImageProperties imageProperties)
Tải TensorBuffer
chứa các giá trị pixel với ImageProperties
cụ thể.
Hình dạng của TensorBuffer
sẽ không được sử dụng để xác định chiều cao và chiều rộng của hình ảnh. Đặt thuộc tính hình ảnh thông qua ImageProperties
.
Lưu ý: nếu kiểu dữ liệu của buffer
không khớp với kiểu dữ liệu của TensorImage
này, việc truyền và kẹp số sẽ được áp dụng khi gọi getTensorBuffer()
và getBuffer()
.
Thông số
đệm | |
---|---|
thuộc tính hình ảnh |
Ném
Ngoại lệ Đối số bất hợp pháp | nếu kích thước bộ đệ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 |
---|
tải khoảng trống công khai (Hình ảnh hình ảnh)
Tải một đối tượng Image
vào TensorImage
này.
Cách sử dụng chính của phương pháp này là tải một đối tượng Image
làm đầu vào mô hình cho https://www.tensorflow.org/lite/inference_with_metadata/task_library/overview . TensorImage
được hỗ trợ bởi Image
không được ImageProcessor
hỗ trợ.
* @ném IllegalArgumentException nếu ImageFormat
của image
không phải là YUV_420_888
Thông số
hình ảnh |
---|