OpenCV で Mat を操作する最も速い方法は、最初に次のような適切なプリミティブ型の配列にコピーすることです。
byte[][] array = new byte[rows][cols];
for (int i = 0; i < rows; i++) {
mat.get(i, 0, array[i]);
}
ただし、Java には符号なしの型がないため、これは符号なしの Mat 型 (例: ) を持つ OpenCV4Android では機能しません8U
。すべての要素に 256 を追加しながら、次に大きいプリミティブ型 (ここでは short) の配列にコピーできます。
byte[] buf = new byte[cols];
short[][] array = new short[rows][cols];
for (int i = 0; i < rows; i++) {
mat.get(i, 0, buf);
for (int j = 0; j < cols; j++) {
array[i][j] = (short) (buf[i]+256);
}
}
もっと速い方法はありますか?