Java tutorial
/*----------------------------------------------------------------------------*/ /* 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); } }