Wie konvertiert byte-array zu Mat Objekt in Java

Möchte ich umwandeln byte-array in Mat-Objekt, aber es wirft

java.lang.UnsupportedOperationException: Provided data element number (60181) should be multiple of the Mat channels count (3)
    at org.opencv.core.Mat.put(Mat.java:992)

Es ist mein code:

byte[] bytes = FileUtils.readFileToByteArray(new File("aaa.jpg"));

Mat mat = new Mat(576, 720, CvType.CV_8UC3);
//Imgcodecs.imencode(".jpg", mat, new MatOfByte(bytes));
mat.put(0, 0, bytes);

Ich viele Wege versucht und auch gegoogelt, eine Menge, aber fand keine Lösung.

Hinweis: ich weiß Imgcodecs.imread("aaa.jpg"); und

BufferedImage img = ImageIO.read(new ByteArrayInputStream(byteArray));
Mat mat = new Mat(img.getHeight(), img.getWidth(), CvType.CV_8UC3);
mat.put(0, 0, ((DataBufferByte) img.getRaster().getDataBuffer()).getData());

Aber ich möchte direkt umwandeln byte-array in Mat-ohne zusätzliche Prozess zu beschleunigen den Prozess der Zeit.

Vielen Dank im Voraus!

Schreibe einen Kommentar