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!
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich löste das problem so:
Jetzt klappt es gut und viel schneller als
*bytes->BufferedImage->Mat*
Versuchen Sie es bitte. Ich bin mit diesem.
Oder
OpenCV imread()
Habe ich versucht, diese Art von Lösung.
ba
? Und wo hast du diemob
im code? Dieser code ist völlig falsch, noch nicht kompiliert werden kann. Am Ende ist die Frage nicht, sagt über das konvertieren von byte-array zu BufferedImage, aber Mat Objekt.Imgcodecs.imdecode()
aufba
wie ich in meiner Antwort oben? Es ist nichts neues, in Ihrer Antwort, der beste Weg ist, das ich getan habe oben, keine Notwendigkeit, es zu tun, wie Sie denken.