将图像转换为Mat并返回

时间:2017-07-21 15:21:47

标签: java image opencv mat channels

我正在尝试将我的图像转换为8位和3个通道的mat,然后再转换回OpenCV中的图像。但是我的代码似乎没有用。

有谁知道为什么这不起作用?

Mat toMat(PImage image) {  
  int w = image.width;  
  int h = image.height;  
  Mat mat = new Mat(h, w, CvType.CV_8UC3);  
  byte[] data8 = new byte[w*h*4];  
  int[] data32 = new int[w*h];  
  arrayCopy(image.pixels, data32);  
  ByteBuffer bBuf = ByteBuffer.allocate(w*h*4);  
  IntBuffer iBuf = bBuf.asIntBuffer();  
  iBuf.put(data32);  
  bBuf.get(data8);  
  mat.put(0, 0, data8);  
  return mat;
}  

PImage toPImage(Mat mat) { 
  int w = mat.width(); 
  int h = mat.height(); 
  PImage image = createImage(h, w, RGB); 
  byte[] data8 = new byte[w*h*4]; 
  int[] data32 = new int[w*h]; 
  mat.get(0, 0, data8); 
  ByteBuffer.wrap(data8).asIntBuffer().get(data32); 
  arrayCopy(data32, image.pixels); 
  return image;
} 

0 个答案:

没有答案