TXT Camera-Ansteuerung Python

Alles rund um TX(T) und RoboPro, mit ft-Hard- und Software
Computing using original ft hard- and software
Forumsregeln
Bitte beachte die Forumsregeln!
Antworten
gbrue
Beiträge: 14
Registriert: 06 Feb 2022, 09:40

TXT Camera-Ansteuerung Python

Beitrag von gbrue » 07 Mär 2022, 16:57

Hallo,

ich habe eine Frage: Ich arbeite mich gerade in die Ansteuerung des TXT mit Python ein.

Ich kann die USB-Camera mit Hilfe des FtRobopy-Moduls ansteuern und auch ein Bild auslesen und abspeichern.

Gibt es eine Möglichkeit, vom Python-Programm aus ein Life-Bild auf dem Bildschirm darzustellen, so wie es ja in Robo Pro möglich ist ?

Meine Ausstattung: Windows 10, Anaconda 3 und ftRobopy und der TXT-Controller über WLAN angeschlossen

Vielen Dank für Eure Hilfe

Gunther

vleeuwen
Beiträge: 1557
Registriert: 31 Okt 2010, 22:23
Wohnort: Enschede (NL)
Kontaktdaten:

Re: TXT Camera-Ansteuerung Python

Beitrag von vleeuwen » 12 Mär 2022, 08:18

See the c++ example on fischertechnik Github.
Strait forward socket communication.
The image are available at a different Berkeley-socket.
You can connect over IP with that socket.

Siehe das c++-Beispiel auf fischertechnik Github.
Strait-Forward-Socket-Kommunikation.
Das Image ist an einer anderen Berkeley-Buchse erhältlich.
Sie können sich mit diesem Socket über IP verbinden.
software enigineer/teacher/advisor
Google translate
http://tescaweb.nl/Carel/?p=713

Torsten
Beiträge: 308
Registriert: 29 Jun 2015, 23:08
Wohnort: Gernsheim (Rhein-Main-Region)

Re: TXT Camera-Ansteuerung Python

Beitrag von Torsten » 12 Mär 2022, 08:36

Hallo Gunther,
gbrue hat geschrieben:
07 Mär 2022, 16:57
Gibt es eine Möglichkeit, vom Python-Programm aus ein Life-Bild auf dem Bildschirm darzustellen, so wie es ja in Robo Pro möglich ist ?
um ein Live-Bild in Python anzeigen zu können, benötigst du irgendein GUI unter Windows. Du könntest das z.B. mit QT implementieren, das wäre dann allerdings etwas Programmieraufwand. Eine andere Möglichkeit könnten diverse Python Image Libraries sein, die Bilder anzeigen können, z.B. Matplotlib.

Ich denke, am einfachsten wird es sein, wenn du Dein ftrobopy-Script in einem Jupyter-Notebook startest. Da ist die Anzeige von Grafiken und Bildern recht einfach.

Um ein Live-Camera Bild auf dem TXT-Display anzuzeigen, ist etwas Aufwand nötig. Ein Beispiel dafür findest Du in der ft:pedia 1/2016 (Digitalkamera mit Autofocus).

Viele Grüße
Torsten

gbrue
Beiträge: 14
Registriert: 06 Feb 2022, 09:40

Re: TXT Camera-Ansteuerung Python

Beitrag von gbrue » 14 Mär 2022, 10:00

Danke für Eure Anregungen.

Mit Matplotlib habe ich auch zu arbeiten begonnen.
Damit konnte ich auch ein Bild auf dem Bildschirm meines Laptops darstellen.
Allerdings nur mit dem Umweg, dass ich das Bild zuerst auf der Festplatte ablege und dann mit Matplotlib wieder einlese und darstelle.
Wenn ich das eingelesene Bild "pic" vom TXT
pic = txt.getCameraFrame()
direkt mit
mg = pic
mgplot = plt.imshow(mg)
darstellen möchte, gibt es immer eine Fehlermeldung: da scheinen wohl die Größen und der Aufbau der Bilder-Datei nicht übereinzustimmen.

Wenn ich die FT-USB-Camera direkt an den Laptop anschließe, gelingt mir sofort ein Live-Bild mit

import numpy as np
import cv2

cap = cv2.VideoCapture(0) # 0 = camera laptop, 1 = usb camera ft
while(True):
ret, frame = cap.read()

cv2.imshow('frame',frame)
if cv2.waitKey(1) & 0xFF == ord('q'):
break

cap.release()
cv2.destroyAllWindows()

Ich werde noch die Datenstruktur des gelieferten Bildes vom TXT zu ergründen.

Gruss Gunther

rugee-f
Beiträge: 63
Registriert: 28 Jan 2022, 13:46

Re: TXT Camera-Ansteuerung Python

Beitrag von rugee-f » 14 Mär 2022, 12:24

Benutzt du die community-Firmware?
Ich glaube cv2 fehlt in der standard Firmware.
Ich habe es nicht geschafft CV2 auf dem standard TXT zu installieren.
Gibt es dazu irgendwelche Tips?

Torsten
Beiträge: 308
Registriert: 29 Jun 2015, 23:08
Wohnort: Gernsheim (Rhein-Main-Region)

Re: TXT Camera-Ansteuerung Python

Beitrag von Torsten » 14 Mär 2022, 16:40

Hallo Gunther,
gbrue hat geschrieben:
14 Mär 2022, 10:00
Ich werde noch die Datenstruktur des gelieferten Bildes vom TXT zu ergründen.
die Datenstruktur des vom TXT gelieferten Bildes ist eine ganz normale JPEG Struktur. Der TXT schickt einfach den (Jpeg) Frame, den er von der USB-Kamera bekommt. Soweit ich weiss, findet da zwischendurch keine Umwandlung mehr statt.

Im alten TXT-C-Programming Guide von fischertechnik, gab es dazu sogar das entsprechende C-Programm zum Entpacken des Bildes in ein unkomprimiertes RGB-Format.

@rugee-f: soweit ich Gunther verstanden habe, verwendet er cv2 nicht auf dem TXT, sondern auf seinem Laptop.

Viele Grüße
Torsten

gbrue
Beiträge: 14
Registriert: 06 Feb 2022, 09:40

Re: TXT Camera-Ansteuerung Python

Beitrag von gbrue » 14 Mär 2022, 22:09

Genau: ich verwende cv2 nur auf meinem Laptop unter Windows10, Anaconda3

rugee-f
Beiträge: 63
Registriert: 28 Jan 2022, 13:46

Re: TXT Camera-Ansteuerung Python

Beitrag von rugee-f » 14 Mär 2022, 22:24

Hallo Torsten,
ich hatte schon gesehen, daß Gunther seine Kamera am Laptop anschließt um ein Bild zu bekommen.
Ich dachte nur er wolle über Python einen Lifestream vom TXT bekommen. Ich habe irgendwo gelesen daß in der Community-Firmware des TXT CV2 integriert sei, dann könnte er genau wie mit seinem Laptop ein Live-Bild bekommen. Dies geht mit der Standard-Firmware des TXT sicher nicht. Der TXT4.0 hat CV2 ebenfalls werksseitig installiert. Da habe ich mit CV2 Frames von der Kamera geholt und via MQTT wieder veröffentlicht. Ähnlich dem TXT Programm der 24V Lernfabrik. In Node Red kannst du die per MQTT übertragenen Frames als Livebild anzeigen lassen.
Wenn jemand einen Tip hat, wie man CV2 auf den TXT bekommt wäre ich dafür sehr dankbar, da ich dann mein TXT4.0 Python Programm auf den TXT portieren könnte...

Schönen Abend noch...

gbrue
Beiträge: 14
Registriert: 06 Feb 2022, 09:40

Re: TXT Camera-Ansteuerung Python

Beitrag von gbrue » 15 Mär 2022, 16:48

Hallo

Ursprünglich war auch mein Plan ein Live-Bild vom TXT zu bekommen.

Weil ich aber immer nur ein Einzelbild vom TXT bekommen konnte und das auch nicht immer, sondern oft auch mit Fehlermeldungen begleitet,
war ich immerhin happy,dass ich
die am Laptop über USB eingesteckte Camera von Python aus ansprechen konnte und da ein Live-Bild mit cv2
auf dem Bildschirm zu zeigen.

Auf diesem Stand werde ich es wahrscheinlich auch belassen.

Gruss Gunther

hypnotoad
Beiträge: 119
Registriert: 16 Feb 2019, 12:43
Wohnort: 30559 Hannover
Kontaktdaten:

Re: TXT Camera-Ansteuerung Python

Beitrag von hypnotoad » 12 Jun 2022, 21:11

Ist zwar etwas spät, aber es gibt zumindestens 2 Lösungen. OpenCV und ImGUI. OpenCV ist einfacher.

Code: Alles auswählen

import cv2
import ftrobopy
txt=...
txt.startCameraOnline(640, 360, 20)
while True:
    jpg = txt.getCameraFrame()
    if jpg != None:
        img = cv2.imdecode(np.frombuffer(bytearray(jpg)), cv2.IMREAD_COLOR)
        cv2.imshow('Kamera', img)
Die ImGUI-Lösung müsste ich erst raussuchen.

gbrue
Beiträge: 14
Registriert: 06 Feb 2022, 09:40

Re: TXT Camera-Ansteuerung Python

Beitrag von gbrue » 09 Jul 2022, 16:07

Danke für den Hinweis.
Ich muss nur noch meine USB-Camera wieder finden, dann probiere ich es aus.

Gruss Gunther

gbrue
Beiträge: 14
Registriert: 06 Feb 2022, 09:40

Re: TXT Camera-Ansteuerung Python

Beitrag von gbrue » 09 Jul 2022, 16:31

Beim Programm-Aufruf gibt es leider folgende Fehlermeldung:

txt.startCameraOnline(640, 360, 20)
TypeError: startCameraOnline() takes 1 positional argument but 4 were given

hypnotoad
Beiträge: 119
Registriert: 16 Feb 2019, 12:43
Wohnort: 30559 Hannover
Kontaktdaten:

Re: TXT Camera-Ansteuerung Python

Beitrag von hypnotoad » 09 Jul 2022, 17:36

Stimmt, es ist nur ein oder gar kein Argument). Schau mal in der pdf-Dokumentation nach (ich hatte testweise ftrobopy verändert)!

Antworten