Renew camera detection
This commit is contained in:
@@ -1,22 +1,24 @@
|
||||
import cv2
|
||||
import numpy as np
|
||||
from game import Game
|
||||
|
||||
# from Track import nothing
|
||||
# Farbwerte für die Erkennung (Beispiel: Rot, Grün, Blau)
|
||||
# # 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([0, 100, 100])
|
||||
upper_red = np.array([10, 255, 255])
|
||||
lower_red = np.array([80, 160, 150])
|
||||
upper_red = np.array([255, 255, 255])
|
||||
|
||||
lower_green = np.array([40, 100, 100])
|
||||
upper_green = np.array([70, 255, 255])
|
||||
lower_green = np.array([40, 50, 160])
|
||||
upper_green = np.array([80, 255, 255])
|
||||
|
||||
lower_blue = np.array([90, 100, 100])
|
||||
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
|
||||
@@ -82,37 +84,41 @@ def erkennung_farben(img):
|
||||
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 = "Nicht gefunden"
|
||||
position = 0
|
||||
else:
|
||||
x = result[0]
|
||||
if x < img_width / 3:
|
||||
position = "Rechts"
|
||||
position = 3
|
||||
elif x < 2 * img_width / 3:
|
||||
position = "Mitte"
|
||||
position = 2
|
||||
else:
|
||||
position = "Links"
|
||||
position = 1
|
||||
|
||||
positions.append(position)
|
||||
|
||||
return positions
|
||||
|
||||
def count_colors(red: int, green: int, blue: int) -> None:
|
||||
currrent_scores = {'score_red': red,
|
||||
'score_green': green,
|
||||
'score_blue': blue
|
||||
}
|
||||
Game.set_scoreboard(currrent_scores)
|
||||
# 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)
|
||||
|
||||
# Hauptprogramm
|
||||
if __name__ == "__main__":
|
||||
# Videoquelle öffnen (kann auch eine Bilddatei sein)
|
||||
video = cv2.VideoCapture(1) # Hier "0" für die Kamera verwenden
|
||||
|
||||
def main():
|
||||
# Videoquelle öffnen (kann auch eine Bilddatei sein)
|
||||
video = cv2.VideoCapture(0) # Hier "0" für die Kamera verwenden
|
||||
|
||||
while True:
|
||||
# Einzelbild von der Videoquelle lesen
|
||||
ret, frame = video.read()
|
||||
|
||||
ret, frame = video.read(0)
|
||||
|
||||
# Fehlerbehandlung, wenn kein Bild gelesen werden kann
|
||||
if not ret:
|
||||
@@ -121,12 +127,14 @@ if __name__ == "__main__":
|
||||
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)
|
||||
|
||||
# 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)
|
||||
# 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]
|
||||
@@ -141,13 +149,17 @@ if __name__ == "__main__":
|
||||
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
|
||||
# Bild anzeigen
|
||||
cv2.imshow("Farberkennung", farben_img)
|
||||
|
||||
# Auf "q" drücken, um die Schleife zu beenden
|
||||
# Auf "q" drücken, um die Schleife zu beenden
|
||||
if cv2.waitKey(1) & 0xFF == ord('q'):
|
||||
break
|
||||
|
||||
# Videoquelle und Fenster schließen
|
||||
# Videoquelle und Fenster schließen
|
||||
video.release()
|
||||
cv2.destroyAllWindows()
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
Reference in New Issue
Block a user