Made saturation configuration
authorTomas Wenström <tomas.wenstrom@gmail.com>
Sun, 11 Aug 2019 10:32:33 +0000 (12:32 +0200)
committerTomas Wenström <tomas.wenstrom@gmail.com>
Sun, 11 Aug 2019 10:32:33 +0000 (12:32 +0200)
src/kaka/cakelight/Configuration.java
src/kaka/cakelight/VideoFrame.java

index a68bb39..51b2a00 100644 (file)
@@ -53,6 +53,7 @@ public class Configuration {
         public int height;
         public int bpp;
         public int format;
+        public double saturation;
         public CropConfiguration crop;
         public ListConfiguration list;
 
@@ -70,6 +71,7 @@ public class Configuration {
                 default:
                     format = Imgproc.COLOR_YUV2BGR_UYVY;
             }
+            saturation = Double.parseDouble(get(prop, "video.saturation", "0.5"));
             crop = new CropConfiguration(prop);
             list = new ListConfiguration(prop);
         }
index 6435242..931237d 100644 (file)
@@ -104,7 +104,10 @@ public class VideoFrame {
     private Color wrappedGetLedColor(ListPosition listPosition, int xy) {
         Color c = getLedColor(listPosition, xy);
         double[] hsv = c.toHSV();
-        return Color.hsv(hsv[0], 1, 1);
+        double saturation = config.video.saturation >= 0.5
+                ? hsv[1] + (config.video.saturation - 0.5) * 2 * (1 - hsv[1])
+                : hsv[1] - (1 - config.video.saturation * 2) * hsv[1];
+        return Color.hsv(hsv[0], saturation, hsv[2]);
     }
 
     private Color getLedColor(ListPosition listPosition, int xy) {