如何将 mat(OpenCV) 转换为 image(JavaFX)? 我认为这不是最好的方法:
MatOfByte byteMat = new MatOfByte();
Highgui.imencode(".bmp", mat, byteMat);
return new Image(new ByteArrayInputStream(byteMat.toArray()));
附注
Image - import javafx.scene.image.Image;
最佳答案
一种方法是这样。我不记得我得到这个的来源:-
private Image mat2Image(Mat frame)
{
int type = BufferedImage.TYPE_BYTE_GRAY;
if ( frame.channels() > 1 ) {
type = BufferedImage.TYPE_3BYTE_BGR;
}
int bufferSize = frame.channels()*frame.cols()*frame.rows();
byte [] b = new byte[bufferSize];
frame.get(0,0,b); // get all the pixels
BufferedImage image = new BufferedImage(frame.cols(),frame.rows(), type);
final byte[] targetPixels = ((DataBufferByte) image.getRaster().getDataBuffer()).getData();
System.arraycopy(b, 0, targetPixels, 0, b.length);
return SwingFXUtils.toFXImage(image,null);
}
可能有一种方法可以使用 Opencv 中的 Converters 类和 JDK8 使其变得更简洁。如果我发现任何这样的事情,我会更新。
关于java - 如何将mat(OpenCV)转换为图像(JavaFX)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29120869/