Java Android上的OpenCV:从许多mats中获取字节[]数组的有效方法

Java Android上的OpenCV:从许多mats中获取字节[]数组的有效方法,java,android,opencv,mat,Java,Android,Opencv,Mat,我有一个MAT的列表,我需要将它们转换成字节[]数组。问题是这种产品的开销很高。arraycopy部分工作正常,所以不用担心。我的问题是,是否存在比这更好的方法: // These array comes allocated an filled with data byte[] patches; // Big array to store all patches int offsets[]; // Array with positions to copy for(int i

我有一个MAT的列表,我需要将它们转换成字节[]数组。问题是这种产品的开销很高。arraycopy部分工作正常,所以不用担心。我的问题是,是否存在比这更好的方法:

  // These array comes allocated an filled with data
  byte[] patches; // Big array to store all patches
  int offsets[];  // Array with positions to copy

  for(int i = 0; i < matList.size(); i++) 
  {
        // Create a little array of mat size and get the data
        int size = matList.get(i).rows() * matList.get(i).cols();
        byte[] patch = new byte[size];      
        matList.get(i).get(0, 0, patch);
        // Copy this little array to the big array
        System.arraycopy(patch, 0, patches, offsets[i], patch.length);
  }
//这些数组分配了一个填充了数据的数组
字节[]补丁;//存储所有补丁的大阵列
整数偏移量[];//包含要复制的位置的数组
对于(int i=0;i

如果我没有弄错的话,在Java中,我不能将带有偏移量的大补丁数组的引用传递给mat.get(0,0,array)函数,以避免分配所有这些小补丁。

如果所有的
mat
具有相同的宽度,那么可以尝试使用方法将它们连接到单个
mat
对象。然后,您将能够使用单个
get

获取原始字节。不幸的是,它们的大小不同。不管怎么说,小费不错。