Deeplearning4j :在 Android Studio 上找不到 java.awt.image.Buffere



我在Python中使用Keras制作了一个图像分类模型,该模型为".h5">格式。我正在尝试使用Deeplearning4j在我的Android应用程序中使用它。

当我尝试通过使用 NativeImageLoader 构造函数加载Mat图像来进行图像分类时,我遇到了一个问题。代码如下:

NativeImageLoader nativeImageLoader = new NativeImageLoader(60, 60, 3);
INDArray image = nativeImageLoader.asMatrix(testImage);   // testImage is of Mat format
// 0-255 to 0-1
DataNormalization scaler = new ImagePreProcessingScaler(0, 1);
scaler.transform(image);
// Pass through to neural Net
INDArray output = model.output(image);
INDArray labels = model.getLabels();

当应用程序构建时,它会在上面代码的第二行给出错误,即INDArray image = nativeImageLoader.asMatrix(testImage);

构建apk时出现以下错误:

Error:(1109, 51) error: cannot access BufferedImage
class file for java.awt.image.BufferedImage not found

我试图找到解决方案,但这和这说 AWT 包在 Android 中不受支持。

请帮助我提供解决方案或解决方法。谢谢。

你必须重构 Deeplearning4j 才能将 java-awt 特定的库移植到一个独立的平台 java lib with platfrom 特定于 android 和 awt/j2se 的处理程序

在java Deeplearning4j lib中,你必须将所有java-awt特定的类(如BufferedImage)隐藏在接口IBitmap后面,并为j2se和Android独立实现该接口。

我已经成功地完成了exif/icc/ipc元数据处理和实现接口 pixymeta-lib/.../IBitmap.java 与实施 j2se pixymeta-j2se-lib/.../j2se/BitmapNative.java 和安卓 pixymeta-android-lib/.../android/BitmapNative.java

所以我有这些包

  • pixymeta-lib
    • 转换后独立于平台的库,其中所有 awt 引用都由 IBitmap 接口替换
  • pixymeta-j2se-lib
    • IBitmap 的 awt/j2se 实现
  • pixymeta-android-lib
    • IBitmap 的安卓实现

这个答案的一部分是从这里复制的

最新更新