Почему изображение меняется на белую область?Python

Программы на Python
Anonymous
Почему изображение меняется на белую область?

Сообщение Anonymous »

У меня снова возникла проблема при кодировании видеоредактора... Вот упрощенный код (переменные указаны на немецком языке, не удивляйтесь и не стесняйтесь спрашивать, если что-то не понимаете):

Код: Выделить всё

from tkinter import *
from tkinter.filedialog import askopenfilename
from PIL import Image, ImageTk
import cv2
Fenster = Tk()
Fenster.geometry(f"{Fenster.winfo_screenwidth()}x{Fenster.winfo_screenheight()}")
Maximale_Breite = int(Fenster.winfo_screenwidth() * 0.08)
Maximale_Höhe = int(Fenster.winfo_screenheight() * 0.08)
Medien_Importierungen = 0
Medien = Canvas(Fenster, width=Fenster.winfo_screenwidth() * 0.2, height=Fenster.winfo_screenheight(),
highlightbackground="#dd6800")
Medien.pack(side=LEFT)
Medien_Importieren = Label(Medien, text="Import media")
Medien_Importieren.place(x=int(Fenster.winfo_screenwidth() / 10 - Medien_Importieren.winfo_reqwidth() / 2),
y=Fenster.winfo_screenheight() / 20)
def Medien_Hinzufügen(event):
global Medien_Importierungen, Maximale_Breite, Maximale_Höhe, Tkinter_Bild
Videopfad = askopenfilename(filetypes=[('Video Files', '*.mp4')])
if Videopfad:
Geladenes_Video = cv2.VideoCapture(Videopfad)
Rückgabe, Einzelbild = Geladenes_Video.read()
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)
if Medien_Importierungen % 2 == 0:
x_position = Fenster.winfo_screenwidth() * 0.01 + Maximale_Breite / 2 - Einzelbild.shape[1] / 2
else:
x_position = Fenster.winfo_screenwidth() * 0.11 + Maximale_Breite / 2 - Einzelbild.shape[1] / 2
y_position = (Fenster.winfo_screenheight() / 10 +
(Fenster.winfo_screenwidth() * 0.01 + Maximale_Höhe) * (Medien_Importierungen // 2) +
Maximale_Höhe / 2 - Einzelbild.shape[0] / 2)
Thumbnail.place(x=x_position, y=y_position)
Medien_Importierungen += 1
Medien_Importieren.bind("", Medien_Hinzufügen)
mainloop()
Medien_Hinzufügen(x)» — это функция, которая будет выполняться при нажатии кнопки для импорта видео.
Теперь она отображается каждый раз, когда я импортирую видео в первый раз. первый кадр видео, но когда я выполню эту функцию во второй раз, изображение из первого раза будет белым, и будет показан только первый кадр из второго видео. Это повторяется каждый раз, когда я импортирую видео, и я не знаю, как решить эту проблему...
Я пытался создать всю метку в условии if-else, но это не помогло. тоже не работает...

Подробнее здесь: https://stackoverflow.com/questions/788 ... white-area

Вернуться в «Python»