Покажите изображение с tkinter и Pillow - PullRequest
1 голос
/ 22 декабря 2019

Вот мой код

import tkinter as tk
import cv2
import PIL.Image, PIL.ImageTk

window = tk .Tk()

img = cv2.imread('bee1.jpg')

height, width, no_channels = img.shape

canvas = tk.Canvas(window, width = width, height = height)
canvas.pack()

photo = PIL.ImageTk(0,0,image=photo,anchor=tk.NW)


window.mainloop()

Я работаю в Pycharm 2019.3, Ubuntu (последняя версия)

Я получаю эту ошибку:

ImportError: cannot import name '_imaging' from 'PIL' (/usr/lib/python3/dist-packages/PIL/__init__.py)

Изображение IЯ пытаюсь загрузить это:

введите описание изображения здесь

1 Ответ

0 голосов
/ 23 декабря 2019

В вашем коде есть пара ошибок:

  • вам нужно импортировать PIL с помощью from PIL import Image, иначе вы получите ошибки, которые вы видите,

  • на самом деле вы не должны использовать OpenCV для чтения изображений здесь по 2 причинам ... во-первых, все равно используется PIL, поэтому вы добавляете ненужную зависимость, а во-вторых, потому что OpenCV работает с порядком BGR, а не с RGB, поэтомувсе идет задом наперед, если вы не измените его, что означает, что вы также можете использовать PIL для чтения изображений.


В любом случае, достаточно самодовольства от меня,Вот некоторый рабочий код:

#!/usr/bin/env python3

import tkinter as tk
from PIL import Image, ImageTk

window = tk.Tk()

img = Image.open('bee.jpg')
width, height = img.size

canvas = tk.Canvas(window, width = width, height = height)
canvas.pack()

photo = ImageTk.PhotoImage(img)
canvas.create_image(width//2, height//2, image=photo)

window.mainloop()

enter image description here

...