Wieso zeigt Python das Bild nicht richtig an?

1 Antwort

da ich so unfassbar begabt mit python (danke chatgpt) kann ich mit stolz sagen

Das Problem, dass in deinem Code das Bild nicht richtig angezeigt wird, könnte auf mehrere Ursachen zurückzuführen sein. Hier sind einige Schritte zur Fehlersuche und Lösung des Problems:

  1. Überprüfen des
  2. read
  3. Rückgabewertes:
  • Stelle sicher, dass das Video erfolgreich gelesen wird und dass
  • Rückgabe
  • den Wert
  • True
  • hat. Falls nicht, ist möglicherweise der
  • Videopfad
  • ungültig oder das Video kann nicht geöffnet werden.
  • Füge einen Check hinzu, um sicherzustellen, dass das
  • Einzelbild
  • korrekt geladen wird.
  1. Initialisierung von
  2. Medien_Importierungen
  3. ,
  4. Maximale_Breite
  5. , und
  6. Maximale_Höhe
  7. :
  • Stelle sicher, dass diese Variablen korrekt initialisiert sind, bevor sie im Code verwendet werden.
  1. Speichern der Bildreferenz:
  • Tkinter kann das Bild nicht anzeigen, wenn die Referenz auf das
  • PhotoImage
  • -Objekt (
  • Tkinter_Bild
  • ) vom Garbage Collector entfernt wird. Du musst sicherstellen, dass die Referenz auf das
  • PhotoImage
  • -Objekt erhalten bleibt.

Hier ist eine überarbeitete Version des Codes mit zusätzlichen Überprüfungen und Anpassungen:

python
Code kopieren
from tkinter import *
from tkinter.filedialog import askopenfilename
from PIL import Image, ImageTk
import cv2

# Initialisierung der globalen Variablen
global Medien_Importierungen, Maximale_Breite, Maximale_Höhe
Medien_Importierungen = 0  # Beispielwert
Maximale_Breite = 640      # Beispielwert
Maximale_Höhe = 480        # Beispielwert

# Erstellen des Tkinter Fensters
Fenster = Tk()
Fenster.geometry("800x600")

# Frame für Medien
Medien = Frame(Fenster)
Medien.pack()

# Laden des Videos
Videopfad = askopenfilename(filetypes =[('Video Files', '*.mp4')])
Geladenes_Video = cv2.VideoCapture(Videopfad)
Rückgabe, Einzelbild = Geladenes_Video.read()

if Rückgabe:
    if Einzelbild.shape[0] / Maximale_Höhe > Einzelbild.shape[1] / Maximale_Breite:
        height = Maximale_Höhe
        width = int(Einzelbild.shape[1] * height / Einzelbild.shape[0])
    else:
        width = Maximale_Breite
        height = int(Einzelbild.shape[0] * width / Einzelbild.shape[1])

    Einzelbild = cv2.resize(Einzelbild, (width, height))
    Tkinter_Bild = ImageTk.PhotoImage(image=Image.fromarray(cv2.cvtColor(Einzelbild, cv2.COLOR_BGR2RGB)))

    Thumbnail = Label(Medien, image=Tkinter_Bild)
    Thumbnail.image = Tkinter_Bild  # Halte eine Referenz auf das Bild

    if Medien_Importierungen % 2 == 0:
        Thumbnail.place(x=Fenster.winfo_screenwidth() * 0.01, y=Fenster.winfo_screenheight() / 10 + (Fenster.winfo_screenwidth() * 0.01 + Maximale_Höhe) * (int(Medien_Importierungen / 2)))
    else:
        Thumbnail.place(x=Fenster.winfo_screenwidth() * 0.11, y=Fenster.winfo_screenheight() / 10 + (Fenster.winfo_screenwidth() * 0.01 + Maximale_Höhe) * (int(Medien_Importierungen / 2)))

    Medien_Importierungen += 1
else:
    print("Fehler beim Laden des Videos")

Fenster.mainloop()

Änderungen und Ergänzungen:

  1. Initialisierung von
  2. Medien_Importierungen
  3. ,
  4. Maximale_Breite
  5. , und
  6. Maximale_Höhe
  7. mit Beispielwerten.
  8. Einfache Tkinter-Fenstererstellung und Frame für Medien.
  9. Überprüfung, ob das Video erfolgreich gelesen wird (
  10. Rückgabe
  11. ist
  12. True
  13. ).
  14. Speicherung der Referenz auf das
  15. PhotoImage
  16. -Objekt (
  17. Thumbnail.image = Tkinter_Bild
  18. ).

Teste diesen Code und passe die Variablen und Logik nach Bedarf an. Wenn das Bild immer noch nicht angezeigt wird, überprüfe die Konsole auf Fehlermeldungen und stelle sicher, dass das Video korrekt gelesen wird.

Woher ich das weiß:Recherche

Alex950130 
Beitragsersteller
 31.07.2024, 21:05

ChatGPT nutze ich tatsächlich auch, das konnte mir auch nicht helfen... Und deine Antwort auch nicht so richtig... Deswegen bin ich doch auch auf dieser Plattform ._....

1