java - 如何将 .png 图像转换为字节数组 - Android、TFLITE 应用程序

标签 java android tensorflow tensorflow-lite firebase-mlkit

我已经制作了一个 TFLITE 模型,并使用 Google 的 ML KIT 从我的移动应用程序访问它。我在尝试将数据转换为输入分类器所需的 byte[1][299][299][3] 格式时遇到了麻烦。

我试图将字节流排列成该格式,但我不知道它是否提供左右上下、R-G-B等。

任何人都可以向我指出一些我可以阅读的有关解析 .png 文件的文档吗?

最佳答案

您可以使用 BitmapFactoryInputStream 将 .png 文件转换为 Android Bitmap

ByteArrayOutputStream stream = new ByteArrayOutputStream();

Bitmap bitmap = BitmapFactory.decodeFile(filePath);
bitmap.compress(Bitmap.CompressFormat.PNG, 100, stream);
byte[] image = stream.toByteArray();

使用位图,您还可以获得指定位置的像素颜色。不幸的是,颜色以 int 形式返回,您必须将其分解为 RGBA 值。为此,请参阅:https://developer.android.com/reference/android/graphics/Color

关于java - 如何将 .png 图像转换为字节数组 - Android、TFLITE 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52962853/

相关文章:

java - 如何每秒唤醒一个线程,Java

java - 如何在 LibGDX 中使用 ShapeRenderer 和 ScrollPane?

python-3.x - Convnet 序数回归损失函数

java - ViewPager - 添加或更新卡片时出现问题

java - 为什么会出现 ArrayIndexOutOfBoundsException?

android - 无法将文本绘制到自定义 View

android - 这是进行有关android讨论的最佳网站

android - 共享首选项文件

python - 未实现错误: Cast string to float is not supported

python - 使用 tensorflow 训练对象检测模型时,错误索引[0] = 0 不在 [0, 0) 中