將 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;
}