From 5fe728751d9e36e7bcff282032f75ef2ac7910d2 Mon Sep 17 00:00:00 2001 From: ori agranat Date: Sat, 30 Nov 2019 19:24:03 +0200 Subject: [PATCH] moved res and divisor into pipeline in ui -- added handling of divisor and res in socket handler -- moved pipeline to be index -1 in ui -- removed driver mode object --- .../vision/pipeline/CVPipelineSettings.java | 3 + .../chameleonvision/web/RequestHandler.java | 6 -- .../chameleonvision/web/SocketHandler.java | 19 +++--- chameleon-client/src/store.js | 9 +-- chameleon-client/src/views/Camera.vue | 19 ++++-- .../src/views/CameraViewes/InputTab.vue | 27 +++++++- chameleon-client/src/views/Settings.vue | 6 +- .../src/views/SettingsViewes/Cameras.vue | 26 +------- .../src/views/SettingsViewes/DriverMode.vue | 62 ------------------- 9 files changed, 55 insertions(+), 122 deletions(-) delete mode 100644 chameleon-client/src/views/SettingsViewes/DriverMode.vue diff --git a/Main/src/main/java/com/chameleonvision/vision/pipeline/CVPipelineSettings.java b/Main/src/main/java/com/chameleonvision/vision/pipeline/CVPipelineSettings.java index 853b050c1..e3095924e 100644 --- a/Main/src/main/java/com/chameleonvision/vision/pipeline/CVPipelineSettings.java +++ b/Main/src/main/java/com/chameleonvision/vision/pipeline/CVPipelineSettings.java @@ -2,6 +2,7 @@ package com.chameleonvision.vision.pipeline; import com.chameleonvision.vision.enums.ImageFlipMode; import com.chameleonvision.vision.enums.ImageRotationMode; +import com.chameleonvision.vision.enums.StreamDivisor; @SuppressWarnings("ALL") public class CVPipelineSettings { @@ -12,4 +13,6 @@ public class CVPipelineSettings { public double exposure = 50.0; public double brightness = 50.0; public double gain = 0; + public int VideoModeIndex = 0; + public StreamDivisor streamDivisor = StreamDivisor.NONE; } diff --git a/Main/src/main/java/com/chameleonvision/web/RequestHandler.java b/Main/src/main/java/com/chameleonvision/web/RequestHandler.java index 94534efa9..02fcc428a 100644 --- a/Main/src/main/java/com/chameleonvision/web/RequestHandler.java +++ b/Main/src/main/java/com/chameleonvision/web/RequestHandler.java @@ -49,13 +49,7 @@ public class RequestHandler { } catch (Exception ignored) { newFOV = (Integer) camSettings.get("fov"); } - Integer newStreamDivisor = (Integer) camSettings.get("streamDivisor"); - Integer newResolution = (Integer) camSettings.get("resolution"); - currentCamera.getProperties().setFOV(newFOV); - currentVisionProcess.cameraStreamer.setDivisor(StreamDivisor.values()[newStreamDivisor], true); - currentCamera.setVideoMode(newResolution); - VisionManager.saveCurrentCameraSettings(); SocketHandler.sendFullSettings(); ctx.status(200); diff --git a/Main/src/main/java/com/chameleonvision/web/SocketHandler.java b/Main/src/main/java/com/chameleonvision/web/SocketHandler.java index 0980588b7..ec0f63799 100644 --- a/Main/src/main/java/com/chameleonvision/web/SocketHandler.java +++ b/Main/src/main/java/com/chameleonvision/web/SocketHandler.java @@ -4,6 +4,7 @@ import com.chameleonvision.config.ConfigManager; import com.chameleonvision.vision.VisionManager; import com.chameleonvision.vision.VisionProcess; import com.chameleonvision.vision.camera.CameraCapture; +import com.chameleonvision.vision.enums.StreamDivisor; import com.chameleonvision.vision.pipeline.CVPipeline; import com.chameleonvision.vision.pipeline.CVPipelineSettings; import com.fasterxml.jackson.core.JsonProcessingException; @@ -148,6 +149,13 @@ public class SocketHandler { case "brightness": { currentCamera.setBrightness((Integer) entry.getValue()); } + case "videoMode":{ + currentCamera.setVideoMode((Integer) entry.getValue()); + } + case "streamDivisor":{ + VisionProcess currentVisionProcess = VisionManager.getCurrentUIVisionProcess(); + currentVisionProcess.cameraStreamer.setDivisor(StreamDivisor.values()[(Integer) entry.getValue()], true); + } } VisionManager.saveCurrentCameraPipelines(); @@ -230,16 +238,6 @@ public class SocketHandler { return tmp; } - private static HashMap getOrdinalDriver() { - HashMap tmp = new HashMap<>(); - VisionProcess currentProcess = VisionManager.getCurrentUIVisionProcess(); - CVPipelineSettings driverModeSettings = currentProcess.pipelineManager.driverModePipeline.settings; - tmp.put("isDriver", currentProcess.pipelineManager.getDriverMode()); - tmp.put("driverBrightness", driverModeSettings.brightness); - tmp.put("driverExposure", driverModeSettings.exposure); - return tmp; - } - public static void sendFullSettings() { //General settings Map fullSettings = new HashMap<>(); @@ -252,7 +250,6 @@ public class SocketHandler { fullSettings.put("cameraSettings", getOrdinalCameraSettings()); fullSettings.put("cameraList", VisionManager.getAllCameraNicknames()); fullSettings.put("pipeline", getOrdinalPipeline(currentPipeline.settings.getClass())); - fullSettings.put("driverMode", getOrdinalDriver()); fullSettings.put("pipelineList", VisionManager.getCurrentCameraPipelineNicknames()); fullSettings.put("resolutionList", VisionManager.getCurrentCameraResolutionList()); fullSettings.put("port", currentProcess.cameraStreamer.getStreamPort()); diff --git a/chameleon-client/src/store.js b/chameleon-client/src/store.js index 8dd128900..bdbd6fc44 100644 --- a/chameleon-client/src/store.js +++ b/chameleon-client/src/store.js @@ -35,12 +35,9 @@ export default new Vuex.Store({ sortMode: 0, multiple:false, isBinary: 0, - calibrationMode: 0 - }, - driverMode: { - isDriver: false, - driverExposure: 0, - driverBrightness: 0 + calibrationMode: 0, + VideoModeIndex:0, + streamDivisor:0 }, cameraSettings: {}, resolutionList: [], diff --git a/chameleon-client/src/views/Camera.vue b/chameleon-client/src/views/Camera.vue index afcd4c9ec..3760f972f 100644 --- a/chameleon-client/src/views/Camera.vue +++ b/chameleon-client/src/views/Camera.vue @@ -23,7 +23,7 @@ + @input="handleInput('currentPipeline',currentPipelineIndex - 1)"/> @@ -76,12 +76,13 @@ + v-model="selectedTab" v-if="currentPipelineIndex !== 0"> Input Threshold Contours Output +
@@ -251,6 +252,9 @@ }, selectedComponent: { get() { + if (this.currentPipelineIndex === 0){ + return "InputTab" + } switch (this.selectedTab) { case 0: return "InputTab"; @@ -272,7 +276,7 @@ try { return `Pitch: ${parseFloat(p['pitch']).toFixed(2)}, Yaw: ${parseFloat(p['yaw']).toFixed(2)}, Area: ${p['area'].toFixed(2)}, FPS: ${fps.toFixed(2)}` } catch (e) { - return "" + return "" } } else { return undefined; @@ -289,10 +293,10 @@ }, currentPipelineIndex: { get() { - return this.$store.state.currentPipelineIndex; + return this.$store.state.currentPipelineIndex + 1; }, set(value) { - this.$store.commit('currentPipelineIndex', value); + this.$store.commit('currentPipelineIndex', value - 1); } }, cameraList: { @@ -302,7 +306,10 @@ }, pipelineList: { get() { - return this.$store.state.pipelineList; + let tmp = ["Driver Mode"]; + let pipelineList = this.$store.state.pipelineList; + tmp = tmp.concat(pipelineList); + return tmp; } }, pipeline: { diff --git a/chameleon-client/src/views/CameraViewes/InputTab.vue b/chameleon-client/src/views/CameraViewes/InputTab.vue index 452d2b7ca..51c7a94a7 100644 --- a/chameleon-client/src/views/CameraViewes/InputTab.vue +++ b/chameleon-client/src/views/CameraViewes/InputTab.vue @@ -4,6 +4,9 @@ + +
@@ -30,7 +33,29 @@ a: 1 } }, - computed: {} + computed: { + resolutionList: { + get() { + let tmp_list = []; + for (let i of this.$store.state.resolutionList) { + tmp_list.push(`${i['width']} X ${i['height']} at ${i['fps']} FPS, ${i['pixelFormat']}`) + } + return tmp_list; + } + }, + streamResolutionList: { + get() { + let cam_res = this.$store.state.resolutionList[this.value.VideoModeIndex]; + let tmp_list = []; + let x = 1; + for (let i = 0; i < 4; i++) { + tmp_list.push(`${cam_res['width'] / x} X ${cam_res['height'] / x}`); + x *= 2; + } + return tmp_list; + } + } + } } diff --git a/chameleon-client/src/views/Settings.vue b/chameleon-client/src/views/Settings.vue index 6c2076f38..c67e9db41 100644 --- a/chameleon-client/src/views/Settings.vue +++ b/chameleon-client/src/views/Settings.vue @@ -6,7 +6,6 @@ v-model="selectedTab"> General Cameras - Driver Mode
@@ -24,14 +23,13 @@ - - \ No newline at end of file