将 Mat 对象转换为 BufferedImage 对象
Daniel Baggio 的这个例子是直接从这个 StackExchange 答案中获取的 ,但是已被重新发布以供查看。
此类接受 Mat 对象并返回 javax.swing
库使用的 BufferedImage 对象。Graphics
对象可以使用它来绘制图像。
private BufferedImage toBufferedImage(Mat m) {
if (!m.empty()) {
int type = BufferedImage.TYPE_BYTE_GRAY;
if (m.channels() > 1) {
type = BufferedImage.TYPE_3BYTE_BGR;
}
int bufferSize = m.channels() * m.cols() * m.rows();
byte[] b = new byte[bufferSize];
m.get(0, 0, b); // get all the pixels
BufferedImage image = new BufferedImage(m.cols(), m.rows(), type);
final byte[] targetPixels = ((DataBufferByte) image.getRaster().getDataBuffer()).getData();
System.arraycopy(b, 0, targetPixels, 0, b.length);
return image;
}
return null;
}