Fehler bei Farberkennung
Forumsregeln
Bitte beachte die Forumsregeln!
Bitte beachte die Forumsregeln!
Fehler bei Farberkennung
Hallo,
ich teste gerade STEM Coding Ulimate AI Tormodell. Hierbei stelle ich ein Problem fest, wenn ich die Farberkennung benutze. Ich erhalte in der Info leiste folgende Angabe:
Exception in thread Thread-4:
Traceback (most recent call last):
File "/usr/lib/python3.5/threading.py", line 914, in _bootstrap_inner
self.run()
File "/usr/lib/python3.5/threading.py", line 862, in run
self._target(*self._args, **self._kwargs)
File "/usr/lib/python3.5/site-packages/fischertechnik/controller/txt4/Txt4Camera.py", line 155, in __update
detector.analyze_frame(frame)
File "/usr/lib/python3.5/site-packages/fischertechnik/camera/ColorDetector.py", line 37, in analyze_frame
callback(self.get_result())
File "/opt/ft/workspaces/Tor_ultimate/Tor_ultimate.py", line 101, in color_callback
if event.value.compare(hex="'#82a842'", hue_tolerance=20) == True:
File "/usr/lib/python3.5/site-packages/fischertechnik/models/Color.py", line 67, in compare
hsv = self.__hex2hsv(kwargs["hex"])
File "/usr/lib/python3.5/site-packages/fischertechnik/models/Color.py", line 100, in __hex2hsv
rgb = self.__hex2rgb(hex_str)
File "/usr/lib/python3.5/site-packages/fischertechnik/models/Color.py", line 86, in __hex2rgb
return list(tuple(int(hex_str[i:i + hlen // 3], 16) for i in range(0, hlen, hlen // 3)))
File "/usr/lib/python3.5/site-packages/fischertechnik/models/Color.py", line 86, in <genexpr>
return list(tuple(int(hex_str[i:i + hlen // 3], 16) for i in range(0, hlen, hlen // 3)))
ValueError: invalid literal for int() with base 16: "'#8"
Alles funktioniert bis auf die Farberkennung. Zur Kontolle habe ich cameraman_dedect_color geladen und bekommen den selben Ausdruck und es kommt keine Angaben auf der Anzeigen (z.B. Hex-Code).
Ich habe überall die neueste Software geladen.
Kennt jemand das Problem?
Vielen Dank im Voraus für eure Hilfe, mfg Karsten
ich teste gerade STEM Coding Ulimate AI Tormodell. Hierbei stelle ich ein Problem fest, wenn ich die Farberkennung benutze. Ich erhalte in der Info leiste folgende Angabe:
Exception in thread Thread-4:
Traceback (most recent call last):
File "/usr/lib/python3.5/threading.py", line 914, in _bootstrap_inner
self.run()
File "/usr/lib/python3.5/threading.py", line 862, in run
self._target(*self._args, **self._kwargs)
File "/usr/lib/python3.5/site-packages/fischertechnik/controller/txt4/Txt4Camera.py", line 155, in __update
detector.analyze_frame(frame)
File "/usr/lib/python3.5/site-packages/fischertechnik/camera/ColorDetector.py", line 37, in analyze_frame
callback(self.get_result())
File "/opt/ft/workspaces/Tor_ultimate/Tor_ultimate.py", line 101, in color_callback
if event.value.compare(hex="'#82a842'", hue_tolerance=20) == True:
File "/usr/lib/python3.5/site-packages/fischertechnik/models/Color.py", line 67, in compare
hsv = self.__hex2hsv(kwargs["hex"])
File "/usr/lib/python3.5/site-packages/fischertechnik/models/Color.py", line 100, in __hex2hsv
rgb = self.__hex2rgb(hex_str)
File "/usr/lib/python3.5/site-packages/fischertechnik/models/Color.py", line 86, in __hex2rgb
return list(tuple(int(hex_str[i:i + hlen // 3], 16) for i in range(0, hlen, hlen // 3)))
File "/usr/lib/python3.5/site-packages/fischertechnik/models/Color.py", line 86, in <genexpr>
return list(tuple(int(hex_str[i:i + hlen // 3], 16) for i in range(0, hlen, hlen // 3)))
ValueError: invalid literal for int() with base 16: "'#8"
Alles funktioniert bis auf die Farberkennung. Zur Kontolle habe ich cameraman_dedect_color geladen und bekommen den selben Ausdruck und es kommt keine Angaben auf der Anzeigen (z.B. Hex-Code).
Ich habe überall die neueste Software geladen.
Kennt jemand das Problem?
Vielen Dank im Voraus für eure Hilfe, mfg Karsten
Re: Fehler bei Farberkennung
Guten Morgen Karsten,
Ich habe zwar weder den STEM Kasten noch einen TXT 4.0, d.h. meine Fehleranalyse kommt rein aus der Erfahrung mit Python.
Kurzfassung: Irgendwo im Modell wird die Farbe mit der verglichen werden soll als textstring eingegeben: Hier "#82a842" (grün-olive). Einfach das '#' Zeichen weglassen 82a842 und es sollte funktionieren. Wo das ist kann ich leider nicht sagen.
Langfassung:
Python tracebacks liest man am besten von hinten nach vorne.
Also ValueError: invalid literal for int() with base 16: "'#8"
Im Klartext bedeutet das: "#8" stellt keine Hexadezimalzahl dar (wegen des #). Wo kommt das her?
wenn man jetzt rückwärts liest ist da einiger Code, der den textstring in 3 Häppchen zerlegt.
irgendwann stösst man auf die Zeile:
if event.value.compare(hex="'#82a842'", hue_tolerance=20) == True:
Und hier taucht der #8 wieder auf. Dann hört es aber für mich auf.
Ich hoffe ich konnte helfen
Schönen Sonntag Joachim
Ich habe zwar weder den STEM Kasten noch einen TXT 4.0, d.h. meine Fehleranalyse kommt rein aus der Erfahrung mit Python.
Kurzfassung: Irgendwo im Modell wird die Farbe mit der verglichen werden soll als textstring eingegeben: Hier "#82a842" (grün-olive). Einfach das '#' Zeichen weglassen 82a842 und es sollte funktionieren. Wo das ist kann ich leider nicht sagen.
Langfassung:
Python tracebacks liest man am besten von hinten nach vorne.
Also ValueError: invalid literal for int() with base 16: "'#8"
Im Klartext bedeutet das: "#8" stellt keine Hexadezimalzahl dar (wegen des #). Wo kommt das her?
wenn man jetzt rückwärts liest ist da einiger Code, der den textstring in 3 Häppchen zerlegt.
irgendwann stösst man auf die Zeile:
if event.value.compare(hex="'#82a842'", hue_tolerance=20) == True:
Und hier taucht der #8 wieder auf. Dann hört es aber für mich auf.
Ich hoffe ich konnte helfen
Schönen Sonntag Joachim
Re: Fehler bei Farberkennung
Hallo Joachim,
vielen Dank für deine Erklärung. Das sieht im Moment sehr logisch und einfach aus das zu korrigiern. Nur Leider gebe ich in einem Fenster die Fabe in HEX ein, aber beim Speichern der Eingabe wird vom Programm her das # davor gesetzt. Ich habe ja als Kontrolle eine ft Progamm verwendet. Hier ist die Farbe schon enthalten und das # steht davor.
Ich glaube deine Angaben sind genau richtig, nur kann ich diese Änderung nicht eingeben.
Jetzt habe ich versucht im Python program, das daneben angegeben ist, das # zu löschen. Dies ist aber auch nicht möglich.
Ich hoffe jemand kann das ft-Ptogramm cameraman_detect_color mal ausprobieren.
Nochmals vielen Dank und schöne Grüße Karsten
vielen Dank für deine Erklärung. Das sieht im Moment sehr logisch und einfach aus das zu korrigiern. Nur Leider gebe ich in einem Fenster die Fabe in HEX ein, aber beim Speichern der Eingabe wird vom Programm her das # davor gesetzt. Ich habe ja als Kontrolle eine ft Progamm verwendet. Hier ist die Farbe schon enthalten und das # steht davor.
Ich glaube deine Angaben sind genau richtig, nur kann ich diese Änderung nicht eingeben.
Jetzt habe ich versucht im Python program, das daneben angegeben ist, das # zu löschen. Dies ist aber auch nicht möglich.
Ich hoffe jemand kann das ft-Ptogramm cameraman_detect_color mal ausprobieren.
Nochmals vielen Dank und schöne Grüße Karsten
Re: Fehler bei Farberkennung
Hallo Karsten,
Schade. Ich habe kurz diese Zeile in Python ausprobiert
Das Ergebnis ist genau wie erwartet. Wenn hex_str das # Zeichen enthält kommt die gleiche Fehlermeldung. Ist der string ohne '#' kommt eine Liste mit 3 Elemente raus.
Wenn im ft programm das '#' enthalten ist, kann es sein, dass der weiter Ablauf etwas anders ist?
Hier wird ja in der
event.value.compare - Funktion der wert mit '#' aufgerufen. Diese Funktion is ein callback vermutlich aufgrund der Eingabe des farbstrings.
Dann wird eine innere funktion __hex2hsv aufgerufen
die wiederum __hex2rgb(hexstr) aufruft in der es dann kracht.
Für mich etwas komisch wenn die daten als rgb eingegeben werden und dann über hsv wieder in rbg gewandelt werden.
Das kann man ja alles nachvollziehen. Gibt es in der Eingabemaske noch einen kleinen Schalter hsv/rgb oder so was ähnliches?
Grüße Joachim
Schade. Ich habe kurz diese Zeile in Python ausprobiert
Code: Alles auswählen
list(tuple(int(hex_str[i:i + hlen // 3], 16) for i in range(0, hlen, hlen // 3)))Wenn im ft programm das '#' enthalten ist, kann es sein, dass der weiter Ablauf etwas anders ist?
Hier wird ja in der
event.value.compare - Funktion der wert mit '#' aufgerufen. Diese Funktion is ein callback vermutlich aufgrund der Eingabe des farbstrings.
Dann wird eine innere funktion __hex2hsv aufgerufen
die wiederum __hex2rgb(hexstr) aufruft in der es dann kracht.
Für mich etwas komisch wenn die daten als rgb eingegeben werden und dann über hsv wieder in rbg gewandelt werden.
Das kann man ja alles nachvollziehen. Gibt es in der Eingabemaske noch einen kleinen Schalter hsv/rgb oder so was ähnliches?
Grüße Joachim
- fishfriend
- Beiträge: 2409
- Registriert: 26 Nov 2010, 11:45
Re: Fehler bei Farberkennung
Hallo...
Ich bin mir nicht sicher.
Kann es sein, dass die INT Variable zu klein ist, um den Wert aufzunehmen?
Möglich ist auch, dass der Farbwert zusammengesetzt wird und das # als Zeichen gesehen wird und nicht als Zahl.
Ist der Fehler mit dem originalem Programm oder ist da was geändert?
Mit freundlichen Grüßen
Holger
Ich bin mir nicht sicher.
Kann es sein, dass die INT Variable zu klein ist, um den Wert aufzunehmen?
Möglich ist auch, dass der Farbwert zusammengesetzt wird und das # als Zeichen gesehen wird und nicht als Zahl.
Ist der Fehler mit dem originalem Programm oder ist da was geändert?
Mit freundlichen Grüßen
Holger
ft Riesenräder PDF: ftcommunity.de/knowhow/bauanleitungen
TX-Light: Arduino und ftduino mit RoboPro
TX-Light: Arduino und ftduino mit RoboPro
Re: Fehler bei Farberkennung
Hallo,
ich habe als Kontrolle das Originalprogramm (cameraman_detect_color) von ft heruntergeladen und nicht geändert. Dabei erhalte ich die selbe Angabe wie bei meinem Programm. Das Beispiei ist ja recht simpel und benötig nur die Kamera und das Programm. Ich verwende bei Robo Pro und TXT4.0 die aktuellen Programme.
Viele Grüße Karsten
ich habe als Kontrolle das Originalprogramm (cameraman_detect_color) von ft heruntergeladen und nicht geändert. Dabei erhalte ich die selbe Angabe wie bei meinem Programm. Das Beispiei ist ja recht simpel und benötig nur die Kamera und das Programm. Ich verwende bei Robo Pro und TXT4.0 die aktuellen Programme.
Viele Grüße Karsten
Re: Fehler bei Farberkennung
Hallo Joachim,
danke für die Info. Ich habe als Eingabemaske ein farbiges Rechteck und eine Angabe für die zu suchende Farbe z.B. #00FF00. Diese überschreibe ich mit meine Farbe z.B. 00FFFF und drücke dann sichern. Bei Wiederaufruf steht dann als neue Vorgabe #00FFFF. Als man kann hier normal kein Fehler machen. Aber wie geschrieben habe ich ein Original ft-Programm ohne Änderung verwendet und hier erhalte ich die selbe Angabe.
Viel Grüße Karsten
danke für die Info. Ich habe als Eingabemaske ein farbiges Rechteck und eine Angabe für die zu suchende Farbe z.B. #00FF00. Diese überschreibe ich mit meine Farbe z.B. 00FFFF und drücke dann sichern. Bei Wiederaufruf steht dann als neue Vorgabe #00FFFF. Als man kann hier normal kein Fehler machen. Aber wie geschrieben habe ich ein Original ft-Programm ohne Änderung verwendet und hier erhalte ich die selbe Angabe.
Viel Grüße Karsten
- fishfriend
- Beiträge: 2409
- Registriert: 26 Nov 2010, 11:45
Re: Fehler bei Farberkennung
Hallo...
OK, noch mal zum mitmeißeln.
Benutzt du die STEM oder Robo Pro Coding?
Das Beispiel von dem Ultimate hast du selber geschrieben oder runtergeladen? (ich hab keine Quelle dazu gefunden)
Wenn ich dem camaraman Programm die Farbe ändere wird das ja in das Pythonprogramm übernommen.
Steht denn bei dir auch der richtige Wert oder sind dann dort zwei mal Gartenzaun?
Ich hatte bei der Eingabe keine Probleme. Ich hab es allerdings noch nicht auf dem TXT 4.0 ausprobiert.
Mit freundlichen Grüßen
Holger
OK, noch mal zum mitmeißeln.
Benutzt du die STEM oder Robo Pro Coding?
Das Beispiel von dem Ultimate hast du selber geschrieben oder runtergeladen? (ich hab keine Quelle dazu gefunden)
Wenn ich dem camaraman Programm die Farbe ändere wird das ja in das Pythonprogramm übernommen.
Steht denn bei dir auch der richtige Wert oder sind dann dort zwei mal Gartenzaun?
Ich hatte bei der Eingabe keine Probleme. Ich hab es allerdings noch nicht auf dem TXT 4.0 ausprobiert.
Mit freundlichen Grüßen
Holger
ft Riesenräder PDF: ftcommunity.de/knowhow/bauanleitungen
TX-Light: Arduino und ftduino mit RoboPro
TX-Light: Arduino und ftduino mit RoboPro