Cuando Python ejecuta Image.open, indica que el objeto de tipo 'Imagen no tiene atributo 'abierto' (La imagen no tiene atributo 'abierto').
Causa: Debido a que desde PIL import Image en la primera línea entra en conflicto con tkinter import * en la segunda línea, y tkinter también contiene la clase Image, estás usando tkinter.Image.
Solución alternativa: reemplace Image.open con PIL.Image.open y elimine Image en la primera línea porque duplica la última importación PIL.Image.
Cuando se ejecuta Python, primero compilará el código fuente en el archivo .py en el código de bytes de Python (código de bytes), y luego la máquina virtual de Python (máquina virtual de Python) ejecutará estos códigos de bytes compilados. La idea básica de este mecanismo es la misma que en Java, .NET y Python.