Read an image with OpenCV and display it with Tkinter

后端 未结 3 910
生来不讨喜
生来不讨喜 2020-12-14 13:35

I have a very simple program on Ubuntu 14.04 LTS to read and display an image using OpenCV:

import cv2 #import OpenCV

img = cv2.imread(\'picture.jpg\') #rea         


        
相关标签:
3条回答
  • 2020-12-14 13:48

    For me both answers above did not work but where close. The following code did the trick for me (I also want to use place instead of pack):

        image = cv2.cvtColor(self.image, cv2.COLOR_BGR2RGB)
        image = ImageTk.PhotoImage(image=Image.fromarray(image))
        label_image = Label(self.detection, image=image)
        label_image.image = image
        label_image.place(x=0, y=0, anchor="w")
    
    0 讨论(0)
  • 2020-12-14 13:53

    For Python3 I had to modify @Ha Dang answer:

    from tkinter import *
    from PIL import Image, ImageTk
    import cv2
    import numpy as np
    
    image_name = 'bla.jpg'
    
    image = cv2.imread(image_name)
    
    #Rearrang the color channel
    b,g,r = cv2.split(image)
    img = cv2.merge((r,g,b))
    
    # A root window for displaying objects
    root = Tk()  
    
    # Convert the Image object into a TkPhoto object
    im = Image.fromarray(img)
    imgtk = ImageTk.PhotoImage(image=im) 
    
    # Put it in the display window
    Label(root, image=imgtk).pack() 
    
    root.mainloop() # Start the GUI
    

    Requirements were:

    pip3

    numpy==1.13.1
    opencv-python==3.3.0.9
    Pillow==4.2.1
    

    brew

    python3
    tcl-tk
    
    0 讨论(0)
  • 2020-12-14 14:08

    You might want to take a look at this one. Here is something works for me:

    import numpy as np
    import cv2
    import Tkinter 
    import Image, ImageTk
    
    # Load an color image
    img = cv2.imread('img.png')
    
    #Rearrang the color channel
    b,g,r = cv2.split(img)
    img = cv2.merge((r,g,b))
    
    # A root window for displaying objects
    root = Tkinter.Tk()  
    
    # Convert the Image object into a TkPhoto object
    im = Image.fromarray(img)
    imgtk = ImageTk.PhotoImage(image=im) 
    
    # Put it in the display window
    Tkinter.Label(root, image=imgtk).pack() 
    
    root.mainloop() # Start the GUI
    
    0 讨论(0)
提交回复
热议问题