使用CV_32F到BufferedImage的类型

时间:2017-07-28 19:57:14

标签: java opencv

问题的大部分实现"如何将Mat转换为BufferedImage / java.fx.scene.image.Image"涉及将源Mat存储在像mat.get(row, col, sourceByteArray)这样的字节数组中,然后将sourceByteArray数组复制到图像栅格的字节数组中:

final byte[] destinationByteArray = ((DataBufferByte) image.getRaster().getDataBuffer()).getData();
System.arraycopy(sourceByteArray, 0, destinationByteArray, 0, sourceByteArray.length);

或直接进入bufferedImage的栅格数据元素:

BufferedImage bufferedImage = new BufferedImage(cols, rows, type);
bufferedImage.getRaster().setDataElements(0, 0, cols, rows, sourceByteArray);

当我必须处理类型不是CvType.CV_8SCvType.CV_8U的Mat时,我的问题出现了(只有这些可以存储在字节数组中,其他需要short,int,float,double , 分别)。

尝试将image.getRaster().getDataBuffer()强制转换为DataBufferFloat会抛出一个无法转换异常,就像在将数据传递给setDataElements方法时尝试使用float数组来存储数据一样。

如何解决这个问题?

0 个答案:

没有答案