有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

opencv我不懂用java加载图片的代码

我正在使用java中的OpenCV,但我不了解用java加载图片的类的一部分:

public class ImageProcessor {
  public BufferedImage toBufferedImage(Mat matrix){
    int type = BufferedImage.TYPE_BYTE_GRAY;
    if ( matrix.channels() > 1 ) {
        type = BufferedImage.TYPE_3BYTE_BGR;
    }
    int bufferSize = matrix.channels()*matrix.cols()*matrix.rows();
    byte [] buffer = new byte[bufferSize];
    matrix.get(0,0,buffer); // get all the pixels
    BufferedImage image = new BufferedImage(matrix.cols(),matrix.rows(),type);                    
    final byte[] targetPixels = ((DataBufferByte) image.getRaster().getDataBuffer()).getData();
    System.arraycopy(buffer, 0, targetPixels, 0, buffer.length);  
    return image;
  }

Main类向这个类发送一个Mat对象

结果发送BufferedImage,但我不理解targetPixels,因为这个类在其他地方不使用它。但每当我评论targetPixels和System时。arraycopy,结果显示黑色图片

我想知道targetPixels是什么——它有什么作用


共 (1) 个答案

  1. # 1 楼答案

    targetPixels是新创建的BuffereImage中的字节数组,这些字节是空的,因此需要使用System将字节从缓冲区复制到它。arraycopy:)