From 54de20bce13da79b8e3811aa16d4adcd6fed1de0 Mon Sep 17 00:00:00 2001 From: Titan Robotics Club Date: Sat, 12 Oct 2024 20:34:03 -0700 Subject: [PATCH] Updated ftclib. Added support to annotate detected object rect for the camera stream processor. --- TeamCode/src/main/java/ftclib | 2 +- .../vision/CameraStreamProcessor.java | 49 ------------------- .../src/main/java/teamcode/vision/Vision.java | 5 +- 3 files changed, 4 insertions(+), 52 deletions(-) delete mode 100644 TeamCode/src/main/java/teamcode/vision/CameraStreamProcessor.java diff --git a/TeamCode/src/main/java/ftclib b/TeamCode/src/main/java/ftclib index 4102f15..2af0213 160000 --- a/TeamCode/src/main/java/ftclib +++ b/TeamCode/src/main/java/ftclib @@ -1 +1 @@ -Subproject commit 4102f159adb6c171662426187402730140a7bf52 +Subproject commit 2af0213e992e5b17da8ed4e6e69f5c31ac247256 diff --git a/TeamCode/src/main/java/teamcode/vision/CameraStreamProcessor.java b/TeamCode/src/main/java/teamcode/vision/CameraStreamProcessor.java deleted file mode 100644 index 5328693..0000000 --- a/TeamCode/src/main/java/teamcode/vision/CameraStreamProcessor.java +++ /dev/null @@ -1,49 +0,0 @@ -package teamcode.vision; - -import android.graphics.Bitmap; -import android.graphics.Canvas; - -import org.firstinspires.ftc.robotcore.external.function.Consumer; -import org.firstinspires.ftc.robotcore.external.function.Continuation; -import org.firstinspires.ftc.robotcore.external.stream.CameraStreamSource; -import org.firstinspires.ftc.robotcore.internal.camera.calibration.CameraCalibration; -import org.firstinspires.ftc.vision.VisionProcessor; -import org.opencv.android.Utils; -import org.opencv.core.Mat; - -import java.util.concurrent.atomic.AtomicReference; - -public class CameraStreamProcessor implements VisionProcessor, CameraStreamSource -{ - private final AtomicReference lastFrame = - new AtomicReference<>(Bitmap.createBitmap(1, 1, Bitmap.Config.RGB_565)); - - @Override - public void init(int width, int height, CameraCalibration calibration) - { - lastFrame.set(Bitmap.createBitmap(width, height, Bitmap.Config.RGB_565)); - } - - @Override - public Object processFrame(Mat frame, long captureTimeNanos) - { - Bitmap b = Bitmap.createBitmap(frame.width(), frame.height(), Bitmap.Config.RGB_565); - Utils.matToBitmap(frame, b); - lastFrame.set(b); - return null; - } - - @Override - public void onDrawFrame( - Canvas canvas, int onscreenWidth, int onscreenHeight, float scaleBmpPxToCanvasPx, float scaleCanvasDensity, - Object userContext) - { - // do nothing - } - - @Override - public void getFrameBitmap(Continuation> continuation) - { - continuation.dispatch(bitmapConsumer -> bitmapConsumer.accept(lastFrame.get())); - } -} diff --git a/TeamCode/src/main/java/teamcode/vision/Vision.java b/TeamCode/src/main/java/teamcode/vision/Vision.java index 83ccb81..f7e772f 100644 --- a/TeamCode/src/main/java/teamcode/vision/Vision.java +++ b/TeamCode/src/main/java/teamcode/vision/Vision.java @@ -35,6 +35,7 @@ import org.openftc.easyopencv.OpenCvCameraFactory; import java.util.ArrayList; import ftclib.robotcore.FtcOpMode; +import ftclib.vision.FtcCameraStreamProcessor; import ftclib.vision.FtcEocvColorBlobProcessor; import ftclib.vision.FtcLimelightVision; import ftclib.vision.FtcRawEocvColorBlobPipeline; @@ -90,7 +91,7 @@ public class Vision private FtcRawEocvColorBlobPipeline rawColorBlobPipeline; public FtcRawEocvVision rawColorBlobVision; public FtcLimelightVision limelightVision; - public CameraStreamProcessor cameraStreamProcessor; + public FtcCameraStreamProcessor cameraStreamProcessor; public FtcVisionAprilTag aprilTagVision; private AprilTagProcessor aprilTagProcessor; public FtcVisionEocvColorBlob redBlobVision; @@ -165,7 +166,7 @@ public class Vision if (RobotParams.Preferences.useCameraStreamProcessor) { - cameraStreamProcessor = new CameraStreamProcessor(); + cameraStreamProcessor = new FtcCameraStreamProcessor(); visionProcessorsList.add(cameraStreamProcessor); // FtcDashboard.getInstance().startCameraStream(cameraStreamProcessor, 0); }