Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public class _CaptureParent extends JLabel {
- //public static _CaptureParent[] camList = new _CaptureParent[4];
- public static _CaptureParent[] camList = new _CaptureParent[1];
- private static int count = 0;
- private static ScheduledExecutorService vidTimer;
- private static final VideoCapture vidCap = new VideoCapture();
- Mat frame;
- Runnable[] tasks = new Runnable[] {
- new Runnable() {
- @Override
- public void run() {
- if (isShowing()) {
- frame = frmGrab();
- System.out.println("VISIBLE AT STEP 1");
- }
- }
- },
- new Runnable() {
- @Override
- public void run() {}
- },
- new Runnable() {
- @Override
- public void run() {
- if (isShowing()) {System.out.println("VISIBLE AT STEP 2");
- if (!MbrMain.mitFit.getBackground().equals(colorOn)) {setIcon(new ImageIcon(convMatBuffImage(frame)));
- }
- else {setIcon(new ImageIcon(convMatBuffImage(frame).getScaledInstance((int) getPreferredSize().getWidth(),
- (int) getPreferredSize().getHeight(),
- Image.SCALE_FAST)));
- }
- }
- else {setIcon(null); System.out.println("*NOT* VISIBLE AT STEP 2");
- }
- }
- }
- };
- Mat frmGrab() {
- Mat frame = new Mat();
- if (vidCap.isOpened()) {
- try {vidCap.read(frame);
- }
- catch (Exception exc) {System.err.println("Video capture error " + exc);
- }
- }
- return frame;
- }
- BufferedImage convMatBuffImage(Mat mat) {
- BufferedImage bi = new BufferedImage(getWidth(), getHeight(), BufferedImage.TYPE_3BYTE_BGR);
- try {
- MatOfByte mob = new MatOfByte();
- Imgcodecs.imencode(".jpg", mat, mob);
- byte[] ba = mob.toArray();
- bi = ImageIO.read(new ByteArrayInputStream(ba));
- }
- catch (IOException exc) {System.err.println("Stream data conversion error:" + exc);
- }
- return bi;
- }
- public _CaptureParent() {
- camList[count] = this;
- count ++;
- setIcon(null);
- }
- public static void captureToggle() {
- if (ControlPanel.togCapture.isSelected()) {
- vidCap.open((int) ControlPanel.spinCameraId.getValue());
- feedStart(true, null);
- }
- }
- private static void feedStart(boolean live, String loading) {
- if (vidCap.isOpened()) {
- vidTimer = Executors.newSingleThreadScheduledExecutor();
- for (_CaptureParent captureParent : camList) {
- //for (int j = 0; j < 3; j++) {
- //vidTimer.scheduleAtFixedRate(captureParent.tasks[j], 0, 33, TimeUnit.MILLISECONDS);
- vidTimer.scheduleAtFixedRate(captureParent.tasks[0], 0, 33, TimeUnit.MILLISECONDS);
- vidTimer.scheduleAtFixedRate(captureParent.tasks[2], 0, 33, TimeUnit.MILLISECONDS);
- //}
- }
- }
- else {
- Main.errFixable("Unable to open camera with index " + ControlPanel.spinCameraId.getValue(), "Hardware");
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement