Advertisement
crackanddie

java camera

Apr 20th, 2022
889
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.24 KB | None | 0 0
  1. package frc.robot.subsystems;
  2.  
  3. import frc.robot.RobotContainer;
  4. import frc.robot.Vision.BoardCheck;
  5. import frc.robot.Vision.CubeCheck;
  6.  
  7. import org.opencv.core.Mat;
  8.  
  9. import edu.wpi.cscore.CvSink;
  10. import edu.wpi.cscore.UsbCamera;
  11. import edu.wpi.first.cameraserver.CameraServer;
  12. import edu.wpi.first.wpilibj.Timer;
  13.  
  14. import java.util.*;
  15.  
  16. public class JavaCamera
  17. {
  18.     public int nowTask = 0;
  19.     public int nowResult = -1;
  20.     public int nowIteration = 0;
  21.     public Map<String, Map<String, List<String>>> boardResult;
  22.  
  23.     private UsbCamera camera;
  24.     private CvSink cvSink;
  25.  
  26.     public JavaCamera()
  27.     {
  28.         camera = CameraServer.getInstance().startAutomaticCapture();
  29.         camera.setResolution(640, 480);
  30.         camera.setFPS(30);
  31.         cvSink = CameraServer.getInstance().getVideo();
  32.     }
  33.  
  34.     public void Start()
  35.     {
  36.         new Thread(() -> {
  37.             RobotContainer.train.serverIsRunningSB.setDouble(1);
  38.             while (!Thread.interrupted())
  39.             {
  40.                 float loopBegin = (float)Timer.getFPGATimestamp() * 1000;
  41.                 RobotContainer.train.nowTaskServerSB.setDouble(nowTask);
  42.    
  43.                 Mat source = new Mat();
  44.                 if (cvSink.grabFrame(source) == 0)
  45.                 {
  46.                     continue;
  47.                 }
  48.                 if (source.cols() < 640 || source.rows() < 480)
  49.                 {
  50.                     continue;
  51.                 }
  52.  
  53.                 if (nowTask == 1)
  54.                 {
  55.                     boardResult = BoardCheck.Check(source);
  56.                 }
  57.  
  58.                 if (nowTask == 2)
  59.                 {
  60.                     nowResult = CubeCheck.Check(source, false);
  61.                 }
  62.  
  63.                 if (nowTask == 3)
  64.                 {
  65.                     nowResult = CubeCheck.Check(source, true);
  66.                 }
  67.  
  68.                 if (nowTask == 4)
  69.                 {
  70.                     nowResult = CubeCheck.CheckYellow(source);
  71.                 }
  72.                
  73.                 RobotContainer.train.resultFromClientSB.setDouble(nowResult);
  74.                 RobotContainer.train.iterationsServerSB.setDouble(nowIteration++);
  75.  
  76.                 source.release();
  77.             }
  78.         }).start();
  79.  
  80.     }
  81. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement