1

在我的工作中,我必须从图像的编码字符串中获取图像矩阵。我正在使用 OpenCV 和 JAVA。

谁能告诉我该怎么做?

代码:

BufferedImage originalImage;
                try {
                    originalImage =    ImageIO.read(new File("D:\\testimg.jpg"));
                    ByteArrayOutputStream baos = new ByteArrayOutputStream();
                    ImageIO.write(originalImage, "jpeg", baos);
                    baos.flush();
                    imageInByte = baos.toByteArray();

                    baos.close();

                    String imageDataString = encodeImage(imageInByte);
} catch (IOException e) {
                    e.printStackTrace();
                } catch (Exception ex){
                    ex.printStackTrace();
                }

现在我有了图像字符串。opencv 的 imread() 将文件路径作为输入参数并创建 Mat,但我必须从此 imageDataString 创建 Mat。

谢谢, 苏洛迪普

4

3 回答 3

1

用于从其编码形式解码图像的 opencv 函数是imdecode. 见http://docs.opencv.org/modules/highgui/doc/reading_and_writing_images_and_video.html

于 2013-09-13T14:10:25.787 回答
1

尝试使用此代码将base64字符串转换为opencv java中的mat对象

byte[] imgbytes = DatatypeConverter.parseBase64Binary(fileBase64);

Mat image = Imgcodecs.imdecode(new MatOfByte(imgbytes), Imgcodecs.CV_LOAD_IMAGE_UNCHANGED);

于 2018-12-12T17:30:03.497 回答
-1

you can try this

    File image = new File("assets/imageparser/imageA.jpg");
    BufferedImage buffImage = ImageIO.read(image);

    byte[] data = ((DataBufferByte) buffImage.getRaster().getDataBuffer()).getData();
    Mat mat = new Mat(buffImage.getHeight(), buffImage.getWidth(), CvType.CV_8UC3);
    mat.put(0, 0, data);
于 2014-02-02T07:40:16.620 回答