用tkinter和枕头显示图像

时间:2019-12-21 22:42:46

标签: tkinter pycharm python-imaging-library ubuntu-18.04 cv2

这是我的代码

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()

我正在Ubuntu(最新)的Pycharm 2019.3中运行

我收到此错误:

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

我要加载的图像是:

enter image description here

1 个答案:

答案 0 :(得分:0)

您的代码中有几处错误:

  • 您需要使用from PIL import Image导入PIL,否则您将看到错误,

  • 您不应该真正使用OpenCV在这里读取图像,原因有两个...首先,无论如何,它全部在下面使用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