diff --git a/.idea/misc.xml b/.idea/misc.xml
index cbec6ae..e122dea 100644
--- a/.idea/misc.xml
+++ b/.idea/misc.xml
@@ -8,7 +8,7 @@
-
+
\ No newline at end of file
diff --git a/.idea/workspace.xml b/.idea/workspace.xml
index 9fffa2e..309ae04 100644
--- a/.idea/workspace.xml
+++ b/.idea/workspace.xml
@@ -4,13 +4,13 @@
-
-
+
+
-
+
@@ -38,6 +38,7 @@
{
"keyToString": {
+ "Application.GTCar.executor": "Run",
"Application.GraphicsProgram.executor": "Run",
"Application.Main.executor": "Run",
"Application.Tracker.executor": "Run",
@@ -50,7 +51,7 @@
"com.codeium.enabled": "true",
"git-widget-placeholder": "master",
"kotlin-language-version-configured": "true",
- "last_opened_file_path": "C:/Users/paul3/OneDrive/Dokumente/Studium BME/Semester 3/Interaktion/opencv/build/java/opencv-4100.jar",
+ "last_opened_file_path": "C:/Users/david/Documents/Uni/GTCar/opencv/build/java/opencv-4100.jar",
"node.js.detected.package.eslint": "true",
"node.js.detected.package.tslint": "true",
"node.js.selected.package.eslint": "(autodetect)",
@@ -63,10 +64,17 @@
}
}
-
-
+
+
+
+
+
+
+
+
+
+
-
@@ -74,30 +82,23 @@
-
+
+
+
-
-
+
-
-
-
-
-
-
-
-
@@ -107,8 +108,9 @@
1732108904989
-
-
+
+
+
@@ -126,7 +128,39 @@
1732118799936
-
+
+
+ 1732368525825
+
+
+
+ 1732368525826
+
+
+
+ 1732703104268
+
+
+
+ 1732703104268
+
+
+
+ 1732706211714
+
+
+
+ 1732706211714
+
+
+
+ 1734358037207
+
+
+
+ 1734358037207
+
+
@@ -146,6 +180,10 @@
-
+
+
+
+
+
\ No newline at end of file
diff --git a/src/main/java/CamPuffer.java b/src/main/java/CamPuffer.java
index c9cf6a3..1d06c0d 100644
--- a/src/main/java/CamPuffer.java
+++ b/src/main/java/CamPuffer.java
@@ -56,7 +56,7 @@ public class CamPuffer implements Runnable {
try {
while (running) {
- long startTime = System.currentTimeMillis();
+ //long startTime = System.currentTimeMillis();
capture.read(frame); // Bild einlesen
if (frame.empty()) {
@@ -65,10 +65,11 @@ public class CamPuffer implements Runnable {
}
// Bildverarbeitung hier
+ updateCurrentMat(frame);
// Debug-Ausgabe
- long elapsedTime = System.currentTimeMillis() - startTime;
- System.out.println("Verarbeitungszeit für das Bild: " + elapsedTime + " ms");
+ //long elapsedTime = System.currentTimeMillis() - startTime;
+ //System.out.println("Verarbeitungszeit für das Bild: " + elapsedTime + " ms");
// Speicherbereinigung alle 1000 ms (1 Sekunde)
if (System.currentTimeMillis() - lastGcTime > 1000) {
@@ -84,35 +85,24 @@ public class CamPuffer implements Runnable {
}
}
-
-
-
-
- public boolean isHasStartedCapturing() {
- return hasStartedCapturing;
- }
-
private void updateCurrentMat(Mat img) {
- synchronized (lock) {
- // Puffergröße überwachen
- if (frameBuffer.size() >= MAX_BUFFER_SIZE) {
- Mat oldFrame = frameBuffer.poll(); // Entfernt das älteste Bild im Puffer
- if (oldFrame != null) {
- oldFrame.release(); // Verhindert das Anhäufen von nicht freigegebenen Mat-Objekten
- }
+ // Puffergröße überwachen
+ if (frameBuffer.size() >= MAX_BUFFER_SIZE) {
+ Mat oldFrame = frameBuffer.poll(); // Entfernt das älteste Bild im Puffer
+ if (oldFrame != null) {
+ oldFrame.release(); // Verhindert das Anhäufen von nicht freigegebenen Mat-Objekten
}
-
// Neues Bild in den Puffer hinzufügen
frameBuffer.add(img.clone());
+ currentMat = img;
}
}
public Mat getCurrentMat() {
- synchronized (lock) {
- return currentMat.clone(); // Rückgabe einer Kopie, um Speicherprobleme zu vermeiden
- }
+ return currentMat;
}
+
public void stop() {
running = false;
}
@@ -127,7 +117,6 @@ public class CamPuffer implements Runnable {
}
capture.set(Videoio.CAP_PROP_BUFFERSIZE, 3);
-
capture.set(Videoio.CAP_PROP_EXPOSURE, EXP);
capture.set(Videoio.CAP_PROP_FPS, FPS);
System.out.println("Kamera geöffnet und eingerichtet");
diff --git a/src/main/java/GameLoop.java b/src/main/java/GameLoop.java
index fee5a27..9484605 100644
--- a/src/main/java/GameLoop.java
+++ b/src/main/java/GameLoop.java
@@ -1,7 +1,10 @@
import processing.core.PApplet;
import java.awt.Point;
+import java.util.ArrayList;
+import java.util.List;
public class GameLoop {
+ int activePlayer = 0;
ImgAnalyzer tracker;
@@ -21,14 +24,14 @@ public class GameLoop {
Thread trackerThread = new Thread(tracker::run);
trackerThread.start();
- graphics = new GraphicsProgram(player1, player2);
+ /*graphics = new GraphicsProgram(player1, player2);
String[] args = {"GraphicsProgram"};
PApplet.runSketch(args, graphics);
gl = new GameLogic();
String[] args_ = {"GameLogic"};
- PApplet.runSketch(args_, gl);
+ PApplet.runSketch(args_, gl); */
try {
Thread.sleep(5000);
}catch (Exception e){
@@ -39,7 +42,7 @@ public class GameLoop {
}
private void run(){
- while(true){
+ /*while(true){
//communicate();
Point p1 = tracker.getP1();
@@ -47,10 +50,10 @@ public class GameLoop {
Point p2 = tracker.getP2();
//System.out.println("Player 2 is at " + p2.x + " and " + p2.y);
- player1.setKoords((int)p1.x, (int)p1.y);
- player2.setKoords((int)p2.x, (int)p2.y);
+ player1.setKoords(p1.x, p1.y);
+ player2.setKoords(p2.x, p2.y);
- /*if(gl.doCheckExtern(player2.getTrail(), p1)){ //Check Position von P1 mit Spur von P2
+ if(gl.doCheckExtern(player2.getTrail(), p1)){ //Check Position von P1 mit Spur von P2
System.out.println("Spieler 1 hat verloren");
break;
}
@@ -58,10 +61,10 @@ public class GameLoop {
if(gl.doCheckExtern(player1.getTrail(), p2)){ //Check Position von P2 mit Spur von P1
System.out.println("Spieler 2 hat verloren");
break;
- } */
+ }
- //draw();
- }
+ draw();
+ } */
}
private void communicate() {
diff --git a/src/main/java/GraphicsProgram.java b/src/main/java/GraphicsProgram.java
index 7b95f9b..9813197 100644
--- a/src/main/java/GraphicsProgram.java
+++ b/src/main/java/GraphicsProgram.java
@@ -24,7 +24,7 @@ public class GraphicsProgram extends PApplet {
}
public void settings() {
- //fullScreen();
+ fullScreen();
}
public void setup(){
@@ -51,8 +51,10 @@ public class GraphicsProgram extends PApplet {
while(!trail.isEmpty()) {
int[] koordinaten = trail.poll();
- int x = 1;
- int y = 1;
+ int x = koordinaten[0];
+ int y = koordinaten[1];
+
+ System.out.println();
if(playerID == 0){
image(imgBlue, x, y, particleSize, particleSize);
diff --git a/src/main/java/ImgAnalyzer.java b/src/main/java/ImgAnalyzer.java
index 460a9a7..67333a2 100644
--- a/src/main/java/ImgAnalyzer.java
+++ b/src/main/java/ImgAnalyzer.java
@@ -11,18 +11,17 @@ import java.awt.Point;
public class ImgAnalyzer {
- private final int CAM = 0; // Kamera-ID (0 für Webcam, 1 für andere Cams)
+ private final int CAM = 1; // Kamera-ID (0 für Webcam, 1 für andere Cams)
private final int EXP = -9; // Belichtungszeit (idealerweise: 0)
private final int FPS = 20; // FPS
- private final int THV = 252; // Threshold
+ private final int THV = 245; // Threshold
private Point currentPositionP1 = new Point(0, 0);
private Point currentPositionP2 = new Point(0, 0);
- private CamPuffer camPuffer;
+ private CamPuffer camPuffer = new CamPuffer(CAM, EXP, FPS, THV);;
public ImgAnalyzer() {
- camPuffer = new CamPuffer(CAM, EXP, FPS, THV);
Thread pufferThread = new Thread(camPuffer);
pufferThread.start();
}
@@ -41,20 +40,15 @@ public class ImgAnalyzer {
}
Mat currentImg = null;
-
-
Mat grayFrame = new Mat();
Mat thresholdFrame = new Mat();
+ int debug = 0;
+
while (true) {
try {
currentImg = camPuffer.getCurrentMat();
- //HighGui.imshow("Threshold Image", currentImg);
-
- // ROI anwenden
- //Mat roiFrame = new Mat(downsizedFrame, roi);
-
// In Graustufen konvertieren
Imgproc.cvtColor(currentImg, grayFrame, Imgproc.COLOR_BGR2GRAY);
@@ -71,7 +65,7 @@ public class ImgAnalyzer {
if (positions.size() >= 2) {
currentPositionP1 = positions.get(0);
currentPositionP2 = positions.get(1);
- //System.out.println("currentPositionP1: " + currentPositionP1 + " currentPositionP2: " + currentPositionP2);
+ System.out.println("currentPositionP1: " + currentPositionP1 + " currentPositionP2: " + currentPositionP2);
}
}