edu.wpi.cscore.RawCVMatSource.java Source code

Java tutorial

Introduction

Here is the source code for edu.wpi.cscore.RawCVMatSource.java

Source

/*----------------------------------------------------------------------------*/
/* Copyright (c) 2018-2019 FIRST. All Rights Reserved.                        */
/* Open Source Software - may be modified and shared by FRC teams. The code   */
/* must be accompanied by the FIRST BSD license file in the root directory of */
/* the project.                                                               */
/*----------------------------------------------------------------------------*/

package edu.wpi.cscore;

import org.opencv.core.Mat;

import edu.wpi.cscore.VideoMode.PixelFormat;

public class RawCVMatSource extends ImageSource {
    /**
     * Create an OpenCV source.
     *
     * @param name Source name (arbitrary unique identifier)
     * @param mode Video mode being generated
     */
    public RawCVMatSource(String name, VideoMode mode) {
        super(CameraServerJNI.createRawSource(name, mode.pixelFormat.getValue(), mode.width, mode.height,
                mode.fps));
    }

    /**
     * Create an OpenCV source.
     *
     * @param name Source name (arbitrary unique identifier)
     * @param pixelFormat Pixel format
     * @param width width
     * @param height height
     * @param fps fps
     */
    public RawCVMatSource(String name, VideoMode.PixelFormat pixelFormat, int width, int height, int fps) {
        super(CameraServerJNI.createRawSource(name, pixelFormat.getValue(), width, height, fps));
    }

    /**
     * Put an OpenCV image and notify sinks.
     *
     * <p>Only 8-bit single-channel or 3-channel (with BGR channel order) images
     * are supported. If the format, depth or channel order is different, use
     * Mat.convertTo() and/or cvtColor() to convert it first.
     *
     * @param image OpenCV image
     */
    public void putFrame(Mat image) {
        int channels = image.channels();
        if (channels != 1 && channels != 3) {
            throw new VideoException("Unsupported Image Type");
        }
        int imgType = channels == 1 ? PixelFormat.kGray.getValue() : PixelFormat.kBGR.getValue();
        CameraServerJNI.putRawSourceFrame(m_handle, image.dataAddr(), image.width(), image.height(), imgType,
                (int) image.total() * channels);
    }
}