Ich habe Fotos von einzelnen 45- und LP-Schallplatten. Auf jedem Foto befindet sich die Platte in der Mitte und ist in verschiedenen Winkeln gedreht. Das Ziel ist es, das Bild so zu drehen, dass das Etikett auf der Platte aufrecht steht. Schreibe ein Programm in Python, das ein Foto als Eingabe nimmt, das Eingabefoto dreht und dann das korrekt gedrehte Foto als PNG ausgibt.
Klar, hier ist ein Python-Code, der tun sollte, was du beschrieben hast:

from PIL import Image

def rotate_record(image_path):
    image = Image.open(image_path)
    # Konvertiere zu Graustufen für eine einfachere Verarbeitung
    image = image.convert('L')
    # Drehe das Bild in allen möglichen Winkeln in 1-Grad-Schritten
    for angle in range(0, 360, 1):
        rotated = image.rotate(angle)
        # Überprüfe, ob das Etikett oben im Bild ist
        label_top = rotated.crop((image.width/2-50, 0, image.width/2+50, 50))
        if label_top.getextrema()[0][0] == label_top.getextrema()[1][0]:
            # Das Etikett ist oben, also drehe das Originalbild auf diesen Winkel
            rotated_original = image.rotate(angle, expand=True)
            # Speichere das gedrehte Bild als PNG-Datei mit demselben Namen wie die Originaldatei
            rotated_original.save(image_path[:-4] + '_rotated.png', 'PNG')
            return
    # Wenn das Etikett nicht gefunden wurde, wirf eine ValueError-Ausnahme
    raise ValueError('Etikett nicht gefunden')

So wird die Funktion verwendet:
rotate_record('Pfad/zum/Bild.png')

Diese Funktion verwendet die Python Imaging Library (PIL), um das Bild zu öffnen und zu verarbeiten. Sie dreht das Bild in allen möglichen Winkeln in 1-Grad-Schritten und überprüft, ob das Etikett oben im Bild ist. Wenn es das Etikett findet, dreht es das Originalbild auf diesen Winkel und speichert es als PNG-Datei mit demselben Namen wie die Originaldatei. Wenn es das Etikett nicht findet, wirft es einen ValueError.

Beachte, dass dieser Code davon ausgeht, dass das Etikett immer oben im Bild ist und dass es eine rechteckige Form hat. Wenn dies nicht der Fall ist, musst du den Code möglicherweise anpassen, um nach einem anderen Bereich des Bildes zu suchen oder einen ganz anderen Ansatz zu verwenden.