0
我的图像表示为org.bytedeco.javacpp.Mat。我只是想将它转换为float/int的Java数组。转换背后的原因是我想在其他库(Nd4j)中使用Java阵列进行图像置换。我尝试了下面的方法,但它们不起作用。将org.bytedeco.javacpp.Mat转换为Java int/float数组
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;
}
它究竟如何不起作用?你遇到什么错误/问题? – Castaglia
int [] resizedImageArray1 = MatToFloatArray1(resizedImage); int [] resizedImageArray2 = MatToFloatArray2(resizedImage); resizedImageArray1出来是零大小。而在第二次调用中,我得到UnsupportedOperationException,因为支持这个缓冲区的数组也是空的。 –