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 楼答案
targetPixels是新创建的BuffereImage中的字节数组,这些字节是空的,因此需要使用System将字节从缓冲区复制到它。arraycopy:)