Я использую робота, чтобы сделать снимок экрана. Чтобы избежать ненужного ввода-вывода записи BufferedImage на диск и последующей загрузки его обратно в Mat, я пытаюсь загрузить BufferedImage непосредственно в Mat со следующим кодом.
public static Mat screenShot() throws AWTException, IOException {
Robot r = new Robot();
Rectangle capture = new Rectangle(Toolkit.getDefaultToolkit().getScreenSize());
BufferedImage Image = r.createScreenCapture(capture);
Mat mat = new Mat(Image.getHeight(), Image.getWidth(), CvType.CV_8UC1);
byte[] data = ((DataBufferByte) Image.getRaster().getDataBuffer()).getData();
mat.put(0, 0, data);
return mat;
}
Я получаю эту ошибку:
Exception in thread "AWT-EventQueue-0" java.lang.ClassCastException: java.awt.image.DataBufferInt cannot be cast to java.awt.image.DataBufferByte
Как мне обойти эту проблему?