私の画像は org.bytedeco.javacpp.Mat として表されます。そして、それをfloat / intの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;
}