Mon image est représentée par org.bytedeco.javacpp.Mat. Et je veux simplement le convertir en tableau Java de float/int. La raison derrière la conversion est que je veux utiliser le tableau Java dans une autre bibliothèque (Nd4j) à des fins de permutation d'image. J'ai essayé ci-dessous approches, mais ils ne fonctionnent pas.Conversion d'org.bytedeco.javacpp.Mat en Java int/float array
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;
}
Comment cela ne fonctionne-t-il pas exactement? Quelles sont les erreurs/problèmes que vous rencontrez? – Castaglia
int [] resizedImageArray1 = MatToFloatArray1 (resizedImage); int [] resizedImageArray2 = MatToFloatArray2 (resizedImage); resizedImageArray1 est de taille nulle. Et dans le deuxième appel, j'obtiens UnsupportedOperationException comme le tableau qui soutient ce tampon est vide aussi bien. –