-# default settings
-
+# Video info can be found with 'v4l2-ctl --get-fmt-video'
+# Supported formats: UYVY, YUYV, YVYU
+video.format=UYVY
video.width=720
-video.height=576
+video.height=480
video.bpp=2
-video.crop.left=28
-video.crop.right=22
-video.crop.top=8
-video.crop.bottom=120
+video.crop.left=27
+video.crop.right=29
+video.crop.top=18
+video.crop.bottom=18
leds.cols=32
leds.rows=18
package kaka.cakelight;
+import org.opencv.imgproc.Imgproc;
+
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
public int width;
public int height;
public int bpp;
+ public int format;
public CropConfiguration crop;
private VideoConfiguration(Properties prop) {
width = Integer.parseInt(get(prop, "video.width", "720"));
height = Integer.parseInt(get(prop, "video.height", "576"));
bpp = Integer.parseInt(get(prop, "video.bpp", "2"));
+ switch (get(prop, "video.format", "").toUpperCase()) {
+ case "YUYV":
+ format = Imgproc.COLOR_YUV2RGB_YUYV;
+ break;
+ case "YVYU":
+ format = Imgproc.COLOR_YUV2RGB_YVYU;
+ break;
+ default:
+ format = Imgproc.COLOR_YUV2RGB_UYVY;
+ }
crop = new CropConfiguration(prop);
}
3) Resize to 2 images where each led uses 2 pixels:
vertical - 16 x <#leds>
horizontal - <#leds> x 9
+ 4) Resize to cols x rows first, then resize to a vertical and a horizontal like in (3).
*/
Mat src = new Mat(config.video.height, config.video.width, CvType.CV_8UC2); // 8-bit, unsigned, 2 channels
src.put(0, 0, data);
config.video.width - config.video.crop.right
);
converted = new Mat();
- Imgproc.cvtColor(cropped, converted, Imgproc.COLOR_YUV2RGB_YUYV);
+ Imgproc.cvtColor(cropped, converted, config.video.format);
// timeIt("model 1", () -> model1(converted, Imgproc.INTER_AREA));
// timeIt("model 2", () -> model2(converted, Imgproc.INTER_AREA));
timeIt("model 3", () -> model3(converted, Imgproc.INTER_AREA));
}
public Color getLedColor(ListPosition listPosition, int xy) {
+ // TODO: maybe use highest value from pixels? 100 % from 1st, 66 % from 2nd, 33 % from 3rd. colors might be strange.
switch (listPosition) {
case LEFT:
return interpolatedRowColor(xy, 0, 1, 2);