diff --git a/.idea/workspace.xml b/.idea/workspace.xml
index 4f6884d..1926fe1 100644
--- a/.idea/workspace.xml
+++ b/.idea/workspace.xml
@@ -4,9 +4,8 @@
-
+
-
@@ -35,7 +34,9 @@
+
+
+
+
+
+
+
+
+
+
@@ -66,7 +77,7 @@
1732108904989
-
+
@@ -92,7 +103,15 @@
1732368525826
-
+
+
+ 1732703104268
+
+
+
+ 1732703104268
+
+
@@ -113,6 +132,7 @@
-
+
+
\ No newline at end of file
diff --git a/src/main/java/Tracker.java b/src/main/java/Tracker.java
index a320f5d..d2f1ab5 100644
--- a/src/main/java/Tracker.java
+++ b/src/main/java/Tracker.java
@@ -18,6 +18,7 @@ public class Tracker {
private final int EXP = -7; // Belichtungszeit (idealerweise: 0)
private final int FPS = 60; // FPS
+ private Point currentPosition;
public Tracker(){
}
@@ -34,16 +35,54 @@ public class Tracker {
System.out.println("Fehler: Die Webcam konnte nicht geöffnet werden.");
return;
}
+
+ Mat frame = new Mat();
+
+ while (true){
+ if (capture.read(frame)){
+ HighGui.imshow("GTCar", frame);
+
+ currentPosition = trackPosition(frame);
+
+ if (HighGui.waitKey(1) == 27) {
+ break;
+ }
+ }else{
+ System.out.println("Fehler: Das Kamerabild konnte nicht gelesen werden.");
+ break;
+ }
+ }
+
+
}
public int getX(){
- return x;
+ return (int) currentPosition.x;
}
public int getY(){
- return y;
+ return (int) currentPosition.y;
}
+ public Point getPosition(){
+ return currentPosition;
+ }
+
+
+ private Point trackPosition(Mat thresholdFrame) {
+ // Berechne die Momente des binären Bildes
+ Moments moments = Imgproc.moments(thresholdFrame);
+
+ // Prüfen, ob m00 (Fläche) nicht null ist, um Division durch Null zu vermeiden
+ if (moments.get_m00() != 0) {
+ int cx = (int) (moments.get_m10() / moments.get_m00());
+ int cy = (int) (moments.get_m01() / moments.get_m00());
+ return new Point(cx, cy);
+ } else {
+
+ return null;
+ }
+ }
private VideoCapture setUp() {
System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
VideoCapture capture = new VideoCapture(CAM);