Example usage for org.opencv.imgcodecs Imgcodecs imencode

List of usage examples for org.opencv.imgcodecs Imgcodecs imencode

Introduction

In this page you can find the example usage for org.opencv.imgcodecs Imgcodecs imencode.

Prototype

public static boolean imencode(String ext, Mat img, MatOfByte buf) 

Source Link

Usage

From source file:app.device.manager.Source.java

/**
 * /*from   w w w. j av  a2  s.com*/
 * @return
 * @throws IOException 
 */
public BufferedImage getFrame() throws IOException {
    if (!this.device.grab())
        return null;

    this.device.retrieve(this.frame);
    Imgcodecs.imencode(".bmp", this.frame, this.buffer);

    return (BufferedImage) ImageIO.read(new ByteArrayInputStream(this.buffer.toArray()));
}

From source file:bikecalibration.Utils.java

/**
 * Convert OpenCV Mat to JavaFX Image (using bmp)
 *
 * @param img/*from www  .j  av  a2  s .c om*/
 * @return
 */
public static Image matToImage(Mat img) {
    MatOfByte byteMat = new MatOfByte();
    Imgcodecs.imencode("*.bmp", img, byteMat);
    return new Image(new ByteArrayInputStream(byteMat.toArray()));
}

From source file:br.com.prj.TelaPrincipal.java

/**
 * Converte um Mat em Image/*from   w w w .j a v a  2s .  co m*/
 *
 * @param m
 * @return new Image()
 */
public Image convertMatToImage(Mat m) {
    MatOfByte bytemat = new MatOfByte();
    Imgcodecs.imencode(".jpg", m, bytemat);
    byte[] bytes = bytemat.toArray();
    InputStream in = new ByteArrayInputStream(bytes);
    try {
        return ImageIO.read(in);
    } catch (IOException ex) {
        Logger.getLogger(TelaPrincipal.class.getName()).log(Level.SEVERE, null, ex);
        return null;
    }
}

From source file:camviewer.VideoThread.java

@Override
public void run() {
    synchronized (this) {
        while (runnable) {
            if (webSource.grab()) {
                try {
                    webSource.retrieve(frame);
                    Imgcodecs.imencode(".bmp", frame, mem);
                    Image im = ImageIO.read(new ByteArrayInputStream(mem.toArray()));

                    BufferedImage buff = (BufferedImage) im;
                    Graphics g = panel.getGraphics();

                    if (g.drawImage(buff, 1, 1, panel.getWidth() - 1, panel.getHeight() - 1, 0, 0,
                            buff.getWidth(), buff.getHeight(), null))
                        if (runnable == false) {
                            System.out.println("Going to wait()");
                            this.wait();
                        }/*from  ww w. ja v a2s .  co m*/
                    g.drawRect(0, 0, panel.getWidth() - 1, panel.getHeight() - 1);
                } catch (IOException | InterruptedException ex) {
                    System.out.println("Error" + ex);
                }
            }
        }
    }
}

From source file:carmelo.CameraTask.java

private Image createImageFromMat(Mat src) {
    MatOfByte dst = new MatOfByte();
    Imgcodecs.imencode(".bmp", src, dst);
    return new Image(new ByteArrayInputStream(dst.toArray()));
}

From source file:cctvanalization.FXMLDocumentController.java

private Image grabFrame() {
    if (applicationShouldClose) {
        if (videoCapture.isOpened()) {
            videoCapture.release();/*from w  ww  .  j  av  a 2s . c  o  m*/
        }
        scheduledExecutorService.shutdown();
    }

    Image imageToShow = null;
    Mat frame = new Mat();
    //     Mat prevFrame = new Mat(grabbedImagesPrev.get(grabbedImagesPrev.size() - 1));
    int frameNum = 0;
    if (videoCapture.isOpened()) {
        try {
            videoCapture.read(frame);

            if (!frame.empty()) {
                Imgproc.cvtColor(frame, frame, Imgproc.COLOR_BGR2GRAY);

                MatOfByte buffer = new MatOfByte();
                Imgcodecs.imencode(".png", frame, buffer);
                imageToShow = new Image(new ByteArrayInputStream(buffer.toArray()));

                grabbedFramesTemp.removeAll(grabbedFramesTemp);
                if (grabbedFramesPrev.size() < 10) {
                    grabbedFramesPrev.add(frame);
                } else {
                    for (int i = 1; i < grabbedFramesPrev.size(); i++) {
                        grabbedFramesTemp.add(grabbedFramesPrev.get(i));
                    }
                    grabbedFramesPrev.removeAll(grabbedFramesPrev);
                    for (int i = 0; i < grabbedFramesTemp.size(); i++) {
                        grabbedFramesPrev.add(grabbedFramesTemp.get(i));
                    }
                    grabbedFramesPrev.add(frame);
                }
            }

        } catch (Exception e) {
            System.err.println(e);
        }
    }

    return imageToShow;
}

From source file:com.armeniopinto.stress.control.vision.VisionAgent.java

public byte[] getCapturedFrame() {
    final MatOfByte frameBytes = new MatOfByte();
    synchronized (capturedFrame) {
        Imgcodecs.imencode(".jpg", capturedFrame, frameBytes);
    }//from   w ww.j  a  v a 2s  .  c o  m
    final byte[] bytes = frameBytes.toArray();
    frameBytes.release();

    return bytes;
}

From source file:com.jeremydyer.nifi.CropImageProcessor.java

License:Apache License

final public void cropImage(final ProcessSession session, ProcessContext context, FlowFile original,
        final Mat image) {

    final int x = context.getProperty(X_POINT).evaluateAttributeExpressions(original).asInteger();
    final int y = context.getProperty(Y_POINT).evaluateAttributeExpressions(original).asInteger();
    final int width = context.getProperty(CROP_WIDTH).evaluateAttributeExpressions(original).asInteger();
    final int height = context.getProperty(CROP_HEIGHT).evaluateAttributeExpressions(original).asInteger();

    FlowFile croppedImage = session.write(session.create(original), new OutputStreamCallback() {
        @Override/*w w  w. j  a v a2  s. c  om*/
        public void process(OutputStream outputStream) throws IOException {
            Rect rectCrop = new Rect(x, y, width, height);
            Mat croppedImage = new Mat(image, rectCrop);

            MatOfByte updatedImage = new MatOfByte();
            Imgcodecs.imencode(".jpg", croppedImage, updatedImage);
            outputStream.write(updatedImage.toArray());
        }
    });

    Map<String, String> atts = new HashMap<>();
    atts.put("image.width", new Integer(width).toString());
    atts.put("image.height", new Integer(height).toString());

    croppedImage = session.putAllAttributes(croppedImage, atts);

    session.transfer(croppedImage, REL_CROPPED_IMAGE);
}

From source file:com.jeremydyer.nifi.GetCameraFrame.java

License:Apache License

@Override
public void onTrigger(final ProcessContext context, final ProcessSession session) throws ProcessException {
    MatOfByte image = new MatOfByte();
    MatOfByte bytemat = new MatOfByte();

    camera.read(image);//  ww  w.  ja  v a2 s.  c  o  m
    Imgcodecs.imencode(".png", image, bytemat);
    byte[] bytes = bytemat.toArray();

    InputStream in = new ByteArrayInputStream(bytes);

    try {
        final BufferedImage img = ImageIO.read(in);
        FlowFile flowFile = session.create();
        flowFile = session.write(flowFile, new OutputStreamCallback() {
            @Override
            public void process(final OutputStream out) throws IOException {
                ImageIO.write(img, "PNG", out);
            }
        });
        session.getProvenanceReporter().create(flowFile);
        session.transfer(flowFile, REL_SUCCESS);
    } catch (IOException e) {

    }

}

From source file:com.jeremydyer.nifi.ObjectDetectionProcessor.java

License:Apache License

final public Mat detectObjects(final ProcessSession session, FlowFile original, final JSONObject dd,
        final Mat image) {

    CascadeClassifier objectDetector = new CascadeClassifier(dd.getString("opencv_xml_cascade_path"));
    MatOfRect objectDetections = new MatOfRect();
    objectDetector.detectMultiScale(image, objectDetections);
    //getLogger().error("Detected " + objectDetections.toArray().length + " " + dd.getString("name") + " objects in the input flowfile");

    final AtomicReference<Mat> croppedImageReference = new AtomicReference<>();

    int counter = 0;
    for (int i = 0; i < objectDetections.toArray().length; i++) {
        final Rect rect = objectDetections.toArray()[i];
        FlowFile detection = session.write(session.create(original), new OutputStreamCallback() {
            @Override/*w w  w .  j av a 2 s . c  om*/
            public void process(OutputStream outputStream) throws IOException {

                Mat croppedImage = null;

                //Should the image be cropped? If so there is no need to draw bounds because that would be the same as the cropping
                if (dd.getBoolean("crop")) {
                    Rect rectCrop = new Rect(rect.x, rect.y, rect.width, rect.height);
                    croppedImage = new Mat(image, rectCrop);
                    MatOfByte updatedImage = new MatOfByte();
                    Imgcodecs.imencode(".jpg", croppedImage, updatedImage);
                    croppedImageReference.set(croppedImage);
                    outputStream.write(updatedImage.toArray());
                } else {
                    //Should the image have a border drawn around it?
                    if (dd.getBoolean("drawBounds")) {
                        Mat imageWithBorder = image.clone();
                        Imgproc.rectangle(imageWithBorder, new Point(rect.x, rect.y),
                                new Point(rect.x + rect.width, rect.y + rect.height),
                                new Scalar(255, 255, 255));
                        MatOfByte updatedImage = new MatOfByte();
                        Imgcodecs.imencode(".jpg", imageWithBorder, updatedImage);
                        outputStream.write(updatedImage.toArray());
                    } else {
                        MatOfByte updatedImage = new MatOfByte();
                        Imgcodecs.imencode(".jpg", image, updatedImage);
                        outputStream.write(updatedImage.toArray());
                    }
                }

            }
        });

        Map<String, String> atts = new HashMap<>();
        atts.put("object.detection.name", dd.getString("name"));
        atts.put("object.detection.id", new Long(System.currentTimeMillis() + counter).toString());

        counter++;

        detection = session.putAllAttributes(detection, atts);
        session.transfer(detection, REL_OBJECT_DETECTED);
    }

    Mat childResponse = null;

    if (croppedImageReference.get() != null) {
        childResponse = croppedImageReference.get();
    } else {
        childResponse = image;
    }

    if (dd.has("children")) {
        JSONArray children = dd.getJSONArray("children");
        if (children != null) {

            for (int i = 0; i < children.length(); i++) {
                JSONObject ddd = children.getJSONObject(i);
                childResponse = detectObjects(session, original, ddd, childResponse);
            }
        }
    }

    return childResponse;
}