【发布时间】:2016-03-03 03:52:10
【问题描述】:
我的图像表示为 org.bytedeco.javacpp.Mat。我只是想将它转换为浮点/整数的 Java 数组。转换背后的原因是我想将其他库(Nd4j)中的 Java 数组用于图像置换目的。我尝试了以下方法,但它们不起作用。
private static int[] MatToFloatArray1(Mat mat) {
org.bytedeco.javacpp.BytePointer matData = mat.data();
byte[] d = new byte[matData.capacity()];
return toIntArray(d);
}
private static int[] MatToFloatArray2(Mat mat) {
org.bytedeco.javacpp.BytePointer matData = mat.data();
IntBuffer intBuffer = matData.asBuffer().asIntBuffer();
return intBuffer.array();
}
private static int[] toIntArray(byte[] d) {
IntBuffer intBuf =
ByteBuffer.wrap(d)
.order(ByteOrder.BIG_ENDIAN)
.asIntBuffer();
int[] array = new int[intBuf.remaining()];
return array;
}
【问题讨论】:
-
它到底是怎么不起作用的?您遇到什么错误/问题?
-
int[] resizedImageArray1 = MatToFloatArray1(resizedImage); int[] resizedImageArray2 = MatToFloatArray2(resizedImage); resizedImageArray1 的大小为零。在第二次调用中,我得到 UnsupportedOperationException 因为支持这个缓冲区的数组也是空的。
标签: java javacpp deeplearning4j nd4j dl4j