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ề
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)
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
Bitmap
trong cấu hìnhARGB_8888
(kênh "A" luôn không rõ ràng) hoặc trongALPHA_8
, tuỳ thuộc vàoColorSpaceType
củaTensorBuffer
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ề
- kiểu dữ liệu. Hiện tại, chúng tôi chỉ hỗ trợ
DataType.UINT8
và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
Bitmap
trong cấu hìnhARGB_8888
(kênh "A" luôn không rõ ràng) hoặc trongALPHA_8
, tuỳ thuộc vàoColorSpaceType
củaTensorBuffer
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.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 |
---|