Advertisement
Guest User

ScheduledExecutorService task won't repeat

a guest
Mar 20th, 2024
50
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.37 KB | None | 0 0
  1. public class _CaptureParent extends JLabel {
  2.  
  3.     //public static _CaptureParent[] camList = new _CaptureParent[4];
  4.     public static _CaptureParent[] camList = new _CaptureParent[1];
  5.     private static int count = 0;
  6.     private static ScheduledExecutorService vidTimer;
  7.     private static final VideoCapture vidCap = new VideoCapture();
  8.  
  9.     Mat frame;
  10.     Runnable[] tasks = new Runnable[] {
  11.  
  12.         new Runnable() {
  13.             @Override
  14.             public void run() {
  15.                 if (isShowing()) {
  16.                     frame = frmGrab();
  17.                     System.out.println("VISIBLE AT STEP 1");
  18.                 }
  19.             }
  20.         },
  21.         new Runnable() {
  22.             @Override
  23.             public void run() {}
  24.         },
  25.         new Runnable() {
  26.             @Override
  27.             public void run() {
  28.                 if (isShowing()) {System.out.println("VISIBLE AT STEP 2");
  29.  
  30.                     if (!MbrMain.mitFit.getBackground().equals(colorOn)) {setIcon(new ImageIcon(convMatBuffImage(frame)));
  31.                     }
  32.                     else {setIcon(new ImageIcon(convMatBuffImage(frame).getScaledInstance((int) getPreferredSize().getWidth(),
  33.                             (int) getPreferredSize().getHeight(),
  34.                             Image.SCALE_FAST)));
  35.                     }
  36.                 }
  37.                 else {setIcon(null); System.out.println("*NOT* VISIBLE AT STEP 2");
  38.                 }
  39.             }
  40.         }
  41.     };
  42.  
  43.     Mat frmGrab() {
  44.  
  45.         Mat frame = new Mat();
  46.  
  47.         if (vidCap.isOpened()) {
  48.  
  49.             try {vidCap.read(frame);
  50.             }
  51.             catch (Exception exc) {System.err.println("Video capture error " + exc);
  52.             }
  53.         }
  54.  
  55.         return frame;
  56.     }
  57.  
  58.     BufferedImage convMatBuffImage(Mat mat) {
  59.  
  60.         BufferedImage bi = new BufferedImage(getWidth(), getHeight(), BufferedImage.TYPE_3BYTE_BGR);
  61.         try {
  62.  
  63.             MatOfByte mob = new MatOfByte();
  64.             Imgcodecs.imencode(".jpg", mat, mob);
  65.             byte[] ba = mob.toArray();
  66.  
  67.             bi = ImageIO.read(new ByteArrayInputStream(ba));
  68.         }
  69.         catch (IOException exc) {System.err.println("Stream data conversion error:" + exc);
  70.         }
  71.  
  72.         return bi;
  73.     }
  74.  
  75.     public _CaptureParent() {
  76.  
  77.         camList[count] = this;
  78.         count ++;
  79.         setIcon(null);
  80.     }
  81.  
  82.     public static void captureToggle() {
  83.  
  84.         if (ControlPanel.togCapture.isSelected()) {
  85.  
  86.             vidCap.open((int) ControlPanel.spinCameraId.getValue());
  87.             feedStart(true, null);
  88.         }
  89.     }
  90.  
  91.     private static void feedStart(boolean live, String loading) {
  92.  
  93.         if (vidCap.isOpened()) {
  94.  
  95.             vidTimer = Executors.newSingleThreadScheduledExecutor();
  96.  
  97.             for (_CaptureParent captureParent : camList) {
  98.  
  99.                 //for (int j = 0; j < 3; j++) {
  100.  
  101.                     //vidTimer.scheduleAtFixedRate(captureParent.tasks[j], 0, 33, TimeUnit.MILLISECONDS);
  102.                 vidTimer.scheduleAtFixedRate(captureParent.tasks[0], 0, 33, TimeUnit.MILLISECONDS);
  103.                 vidTimer.scheduleAtFixedRate(captureParent.tasks[2], 0, 33, TimeUnit.MILLISECONDS);
  104.                 //}
  105.             }
  106.         }
  107.         else {
  108.  
  109.             Main.errFixable("Unable to open camera with index " + ControlPanel.spinCameraId.getValue(), "Hardware");
  110.         }
  111.     }
  112. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement