diff --git a/src_folder/BackEnd/CameraDetection/CameraDetection.py b/src_folder/BackEnd/CameraDetection/CameraDetection.py deleted file mode 100644 index 468d5a3..0000000 --- a/src_folder/BackEnd/CameraDetection/CameraDetection.py +++ /dev/null @@ -1,165 +0,0 @@ -import cv2 -import numpy as np - -# from Track import nothing -# # Farbwerte für die Erkennung (Beispiel: Rot, Grün, Blau) -colors = [(0, 0, 255), (0, 255, 0), (255, 0, 0)] -color_names = ["Rot", "Gruen", "Blau"] - -# video cap - - -# Farbgrenzen für die Erkennung -lower_red = np.array([80, 160, 150]) -upper_red = np.array([255, 255, 255]) - -lower_green = np.array([40, 50, 160]) -upper_green = np.array([80, 255, 255]) - -lower_blue = np.array([95, 180, 90]) -upper_blue = np.array([130, 255, 255]) - -CURRENT_SCORES= {'score_red': 0, - 'score_green': 0, - 'score_blue': 0 - } - -# Funktion zur Farberkennung -def erkennung_farben(img): - hsv_img = cv2.cvtColor(img, cv2.COLOR_BGR2HSV) - results = [] - - count_red = 0 - count_green = 0 - count_blue = 0 - - for i, color in enumerate(colors): - if i == 0: - lower = lower_red - upper = upper_red - elif i == 1: - lower = lower_green - upper = upper_green - elif i == 2: - lower = lower_blue - upper = upper_blue - - mask = cv2.inRange(hsv_img, lower, upper) - - # Farbfläche finden - contours, _ = cv2.findContours(mask, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE) - center = None - count = 0 - - for contour in contours: - if count < 3: - if cv2.contourArea(contour) > 100: - # Schwerpunkt der Kontur berechnen - M = cv2.moments(contour) - if M["m00"] > 0: - cX = int(M["m10"] / M["m00"]) - cY = int(M["m01"] / M["m00"]) - center = (cX, cY) - count += 1 - # Rechteck zeichnen - x, y, w, h = cv2.boundingRect(contour) - cv2.rectangle(img, (x, y), (x + w, y + h), color, 2) - cv2.putText(img, color_names[i], (x, y - 10), cv2.FONT_HERSHEY_SIMPLEX, 0.9, color, 2) - - # Farbanzahl erhöhen - if i == 0: - count_red += 1 - elif i == 1: - count_green += 1 - elif i == 2: - count_blue += 1 - - - - results.append(center) - - return img, results, count_red, count_green, count_blue - -# Funktion zur Positionsermittlung -def ermittle_position(results, img_width): - positions = [] - - # pos_to_num = {"Rechts": 3, - # "Mitte": 2, - # "Links": 1, - # "Nicht gefunden": 0} - - for result in results: - if result is None: - position = 0 - else: - x = result[0] - if x < img_width / 3: - position = 3 - elif x < 2 * img_width / 3: - position = 2 - else: - position = 1 - - positions.append(position) - return positions - -# def count_colors(my_game: Game, red: int, green: int, blue: int) -> None: -# currrent_scores = {'score_red': red, -# 'score_green': green, -# 'score_blue': blue -# } -# my_game.set_scoreboard(currrent_scores) - - -def main(): - # Videoquelle öffnen (kann auch eine Bilddatei sein) - video = cv2.VideoCapture(0) # Hier "0" für die Kamera verwenden - - while True: - - ret, frame = video.read(0) - - # Fehlerbehandlung, wenn kein Bild gelesen werden kann - if not ret: - break - # Farben erkennen - farben_img, ergebnisse, count_red, count_green, count_blue = erkennung_farben(frame) - - # Add counted colours to the scoreboard in the correct field - - # count_colors(count_red, count_green, count_blue) - - - # Anzahl der Farben anzeigen - # cv2.putText(farben_img, f"Rot: {count_red}", (10, 30), cv2.FONT_HERSHEY_SIMPLEX, 1, colors[0], 2) - # cv2.putText(farben_img, f"Gruen: {count_green}", (10, 60), cv2.FONT_HERSHEY_SIMPLEX, 1, colors[1], 2) - # cv2.putText(farben_img, f"Blau: {count_blue}", (10, 90), cv2.FONT_HERSHEY_SIMPLEX, 1, colors[2], 2) - - # Positionen ermitteln - img_width = frame.shape[1] - positionen = ermittle_position(ergebnisse, img_width) - - # Positionen anzeigen - for i, position in enumerate(positionen): - cv2.putText(farben_img, f"{color_names[i]}: {position}", (10, 150 + 30 * i), - cv2.FONT_HERSHEY_SIMPLEX, 1, colors[i], 2) - - # Linien zeichnen - cv2.line(farben_img, (img_width // 3, 0), (img_width // 3, frame.shape[0]), (0, 0, 0), 2) - cv2.line(farben_img, (2 * img_width // 3, 0), (2 * img_width // 3, frame.shape[0]), (0, 0, 0), 2) - - # Bild anzeigen - cv2.imshow("Farberkennung", farben_img) - - # Auf "q" drücken, um die Schleife zu beenden - if cv2.waitKey(1) & 0xFF == ord('q'): - break - - # Videoquelle und Fenster schließen - video.release() - cv2.destroyAllWindows() - - -if __name__ == "__main__": - main() \ No newline at end of file diff --git a/src_folder/Game_Images/current_score.png b/src_folder/Game_Images/current_score.png index 8ca394e..b75a3d6 100644 Binary files a/src_folder/Game_Images/current_score.png and b/src_folder/Game_Images/current_score.png differ diff --git a/src_folder/Presentation/Interaktion Praktikum Präsentation.pptx b/src_folder/Presentation/Interaktion Praktikum Präsentation.pptx new file mode 100644 index 0000000..62f619c Binary files /dev/null and b/src_folder/Presentation/Interaktion Praktikum Präsentation.pptx differ