Fehlermeldung bei der Erstellung von GUI

  • Da steht doch der nächste Schritt als Handlungsanweisung drin: das ganze mal mit ``-d`` als Argument starten um mehr Debug-Informationen ausgegeben zu bekommen.


    Interessant wäre wahrscheinlich auch noch wie `kivy` installiert wurde. Wenn da was kompiliert wurde und `kivy.lib.vidcore_lite.bcm` nicht importiert werden kann, dann fehlten da vielleicht/wahrscheinlich die Voraussetzungen für. Was kein harter Fehler ist, weil es ja Alternativen gibt, aber auf einem Raspi ist das wahrscheinlich schon die beste Wahl auf EGL mit Hardwareunterstützung zu setzen. X11-Unterstützung scheint auch nicht da zu sein. Der Fallback wäre dann `libsdl2` und da fehlt dann das `sdl2`-Modul.

    “If debugging is the process of removing software bugs, then programming must be the process of putting them in.” — Edsger Dijkstra

  • Hallo,


    in der Kivy-Dokumentation gibt es extra einen Abschnitt für die Installation auf dem Pi. Damit läuft Kivy, zumindest lief es auf einer Desktop-Version von Buster bei mir.


    Bin gerade am Handy, deswegen musst du die Doku mal selbst durchsuchen.


    Grüße

    Dennis

    🎵🎸Die Nordsee schlägt dir ins Gesicht, trotzdem hast du verloren, du bist nicht weit gekommen, du läufst weiter nach vorn 🎵🎸

  • Anton Der Code funktioniert hinten und vorne nicht. Methoden sind falsch eingerückt. `image_camera` auf Modulebene macht keinen Sinn, dafür wird im Code dann versucht auf ein nicht-existierendes Attribut mit dem Namen zuzugreifen.


    Klassennamen werden in PascalCase geschrieben, also nicht `camera_Raspi` sondern `CameraRaspi`. Wobei der Name inhaltlich nicht gut ist.


    `PiCamera` und `PiRGBArray` sind Kontextmanager, die sollte man mit ``with`` benutzen. Der Code an der Stelle ist aber auch reichlich komisch, denn da ist eine Schleife wo die Schleifenvariable `frame` überhaupt nicht verwendet wird.


    `update_kivy()` ist als Name falsch, denn Kivy wird da gar nicht aktualisiert. Die Kommunikation über ein Attribut ist auch nicht wirklich schön/sauber. Man kann die Daten da auch als Argument weiterreichen und sich den Zustand der ja nicht wirklich welcher ist, einzufangen. In `update_texture()` ist da ja sogar schon ein Argument für vorgesehen, was dann aber gar nicht verwendet wird.


    `use_video_video_port` ist offensichtlich falsch geschrieben — da ist ein `video` zu viel.


    Der Thread für die Kameraverarbeitung wird nirgends gestartet.

    “If debugging is the process of removing software bugs, then programming must be the process of putting them in.” — Edsger Dijkstra

  • Hallo,


    herzlichen Dank für eure Hilfestellung. Ich werde versuchen alle Kommentare nachzuvollziehen und werde es bearbeiten.

    Ich habe mal mein Code etwas reduziert und versucht mal kivy wegzulassen und erstmal nur die Cam einschalten. Aber auch hier habe ich eine Fehlermeldung. Kann das aber nicht nachvollziehen.


    Code:


    (das Einrücken wird hier nicht dargestellt)


    Fehlermeldung:


    Traceback (most recent call last):

    File "/home/pi/GUI/Code/Kivy/cam_Raspi.py", line 12, in <module>

    for frame in camera.capture_continuous(rawcapture, format="bgr", use_video_port=True):

    File "/usr/lib/python3/dist-packages/picamera/camera.py", line 1702, in capture_continuous

    if not encoder.wait(self.CAPTURE_TIMEOUT):

    File "/usr/lib/python3/dist-packages/picamera/encoders.py", line 395, in wait

    self.stop()

    File "/usr/lib/python3/dist-packages/picamera/encoders.py", line 419, in stop

    self._close_output()

    File "/usr/lib/python3/dist-packages/picamera/encoders.py", line 349, in _close_output

    mo.close_stream(output, opened)

    File "/usr/lib/python3/dist-packages/picamera/mmalobj.py", line 371, in close_stream

    stream.flush()

    File "/usr/lib/python3/dist-packages/picamera/array.py", line 238, in flush

    self.array = bytes_to_rgb(self.getvalue(), self.size or self.camera.resolution)

    File "/usr/lib/python3/dist-packages/picamera/array.py", line 126, in bytes_to_rgb

    raise PiCameraValueError(

    picamera.exc.PiCameraValueError: Incorrect buffer length for resolution 1280x720

  • Naja, offenbar passen die Grösse des Bildes von der Kamera nicht zur Grösse des `PiRGBArray`-Objekts. Also entweder musst Du die auch bei der Kamera angeben, und zwar so, dass sie zum Array passt, oder Du darfst sie beim Array halt auch *nicht* angeben, damit dort automatisch die Grösse genommen wird, die von der Kamera kommt.

    “If debugging is the process of removing software bugs, then programming must be the process of putting them in.” — Edsger Dijkstra

  • Hallo,


    erstmal wollte ich den Link zur Installation von Kivy nachreichen:

    https://kivy.org/doc/stable-1.…ion/installation-rpi.html


    Dann würde ich dir an Stelle empfehlen bei 'tkinter' zu bleiben. Ich finde 'kivy' ist doch etwas anspruchsvoller und tkinter ist für den Einstieg besser geeignt.


    Grüße

    Dennis

    🎵🎸Die Nordsee schlägt dir ins Gesicht, trotzdem hast du verloren, du bist nicht weit gekommen, du läufst weiter nach vorn 🎵🎸

  • Guten Abend, danke für eure Hilfe.


    Ja, es stimmt mit "kivy" ist es etwas komplizierter aber in "tkinter" finde ich viele Befehle nicht. Wenn ich z.B. die Aufnahme stoppen möchte, dann passiert dies erst nachdem die Aufnahme abgelaufen ist. Ich glaube schon das "tkinter" einfach wäre, was das Verständnis angeht aber in "kivy" gibt es viele Funktionen die vordefiniert.

  • Hallo,


    'tkinter' und 'kivy' sind nur für die Darstellung zuständig. Also die grafische Aufbereitung deines Programms. Die Aufnahme starten und stoppen sind davon unabhängig und sollte ein Programmteil für sich sein.

    Schau mal dass du die Bedienung der Kamera ohne das grafische Zeugs hinbekommst. Erst wenn das steht baut man dann Button's und Co. drum rum. Ob die dann von 'tkinter', 'kivy', 'Qt' oder was auch immer kommen, sollte keine Rolle spielen.


    Grüße

    Dennis

    🎵🎸Die Nordsee schlägt dir ins Gesicht, trotzdem hast du verloren, du bist nicht weit gekommen, du läufst weiter nach vorn 🎵🎸

  • Alles klar, ich werde es mal weiter mit Tkinter versuchen. Kivy ist wirklich etwas komplizierter.

    Herzlichen Dank für eure Hilfestellungen. Finde das wirklich super, wie man hier mit Fragen umgeht und versucht einem auch wirklich zu helfen.

    Hab schon einiges lernen können mit euren Tipps.


    Viele Grüße

    Anton