Python,在标签中的Tkinter中显示openCv图像

Python,在标签中的Tkinter中显示openCv图像,python,image,opencv,numpy,tkinter,Python,Image,Opencv,Numpy,Tkinter,我正在尝试在Tkinter标签中显示openCV图像。当我从文件中加载图像时,如下所示: img = ImageTk.PhotoImage("asd.png") 一切正常。但当我改变它,我得到的只是空的,黑色的图像,不管怎么说。以下是示例代码: import tkinter as tk from tkinter import * import cv2 from skimage import io from PIL import Image, ImageTk from skimage.colo

我正在尝试在Tkinter标签中显示openCV图像。当我从文件中加载图像时,如下所示:

img = ImageTk.PhotoImage("asd.png")
一切正常。但当我改变它,我得到的只是空的,黑色的图像,不管怎么说。以下是示例代码:

import tkinter as tk
from tkinter import *

import cv2
from skimage import io
from PIL import Image, ImageTk
from skimage.color import rgb2gray


def make_label(master, x, y, w, h, img, *args, **kwargs):
   f = Frame(master, height = h, width = w)
   f.pack_propagate(0)
   f.place(x = x, y = y)
   label = Label(f, image = img, *args, **kwargs)
   label.pack(fill = BOTH, expand = 1)
   return label


if __name__ == '__main__':
   root = tk.Tk()
   frame = tk.Frame(root, width=400, height=600, background='white')
   frame.pack_propagate(0)
   frame.pack()
   image = rgb2gray(io.imread("asd.png"))

   image2 = Image.fromarray(image)
   img = ImageTk.PhotoImage(image2)
   make_label(root, 0, 0, 100, 100, img)
   root.mainloop()

请帮忙,我想问题在于,
rgb2gray(io.imread(“asd.png”)
给出的灰度值在0到1之间,而PIL期望值在0到255之间,因此,
Image.fromarray(Image)
的结果是一个黑色正方形,因为所有值都小于1

因此
image2=Image.fromarray(Image*255)
应该给出预期的图像