2016-12-12 2 views
0

Что касается,Python/OpenCV TkInter Исключение

Я новичок в Python и я занимаюсь разработкой графического интерфейса с Python/OpenCV, который отображает два изображения. Один оригинал и другой обработан (отображение краев). Моя программа вылетает с ошибками. Ниже приводится код: `

from mtTkinter import * 
import tkFileDialog 
from PIL import ImageTk 
from PIL import Image 
import cv2 

def select_image(): 
    global panelA, panelB 
    path = tkFileDialog.askopenfilename() 

    if len(path) > 0: 
     image = cv2.imread(path) 
     gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY) 
     edges = cv2.Canny(gray, 50, 100) 
     image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB) 

     image = Image.fromarray(image) 
     edges = Image.fromarray(edges) 

     image = ImageTk.PhotoImage(image) 
     edges = ImageTk.PhotoImage(image) 

     if panelA is None or panelB is None: 
      panelA = Label(image=image) 
      panelA.image = image 
      panelA.pack(side=LEFT, padx=10, pady=10) 


      panelB = Label(image=edges) 
      panelB.image = edges 
      panelB.pack(side=RIGHT, padx=10,pady=10) 

     else: 
      panelA.configure(image=image) 
      panelB.configure(image=edges) 
      panelA.image = image 
      panelB.image = edges 
root = Tk() 
panelA = None 
panelB = None 


btn = Button(root, text="Select an image", command=select_image) 
btn.pack(side="bottom", fill="both", expand="yes", padx="10", pady="10") 

root.mainloop() 

` Ошибки:

`C:\Python27\python.exe C:/Users/BlackHat/PycharmProjects/example/init.py 
Exception in Tkinter callback 
Traceback (most recent call last): 
    File "C:\Python27\lib\lib-tk\Tkinter.py", line 1542, in __call__ 
    return self.func(*args) 
    File "C:/Users/BlackHat/PycharmProjects/example/init.py", line 21, in select_image 
    edges = ImageTk.PhotoImage(image) 
    File "C:\Python27\lib\site-packages\PIL\ImageTk.py", line 108, in __init__ 
    mode = Image.getmodebase(mode) 
    File "C:\Python27\lib\site-packages\PIL\Image.py", line 295, in getmodebase 
    return ImageMode.getmode(mode).basemode 
    File "C:\Python27\lib\site-packages\PIL\ImageMode.py", line 52, in getmode 
    return _modes[mode] 
KeyError: <PIL.ImageTk.PhotoImage object at 0x02DD05B0> 
Exception in Tkinter callback 
Exception AttributeError: "'PhotoImage' object has no attribute '_PhotoImage__photo'" in <bound method PhotoImage.__del__ of <PIL.ImageTk.PhotoImage object at 0x02DD0790>> ignored 
Traceback (most recent call last): 
    File "C:\Python27\lib\lib-tk\Tkinter.py", line 1542, in __call__ 
    return self.func(*args) 
    File "C:/Users/BlackHat/PycharmProjects/example/init.py", line 21, in select_image 
    edges = ImageTk.PhotoImage(image) 
    File "C:\Python27\lib\site-packages\PIL\ImageTk.py", line 108, in __init__ 
    mode = Image.getmodebase(mode) 
    File "C:\Python27\lib\site-packages\PIL\Image.py", line 295, in getmodebase 
    return ImageMode.getmode(mode).basemode 
    File "C:\Python27\lib\site-packages\PIL\ImageMode.py", line 52, in getmode 
    return _modes[mode] 
KeyError: <PIL.ImageTk.PhotoImage object at 0x02DD0890> 
Exception AttributeError: "'PhotoImage' object has no attribute '_PhotoImage__photo'" in <bound method PhotoImage.__del__ of <PIL.ImageTk.PhotoImage object at 0x02DD0850>> ignored 

Process finished with exit code 1` 

Существовали два или более запросов, как это на StackOverflow, но я не нашел правильное решение этой проблемы.

Пожалуйста, помогите. благодаря

ответ

0

Ваша проблема эта линия:

Blockquote

image = Image.fromarray(image) 
    edges = Image.fromarray(edges) 

    image = ImageTk.PhotoImage(image) 
    >>edges = ImageTk.PhotoImage(**image**)<< 

Blockquote

Blockquote

edges = ImageTk.PhotoImage(edges) 

Blockquote

это то, что должен сказать. Здесь вы конвертируете PhotoImage в PhotoImage.

Смежные вопросы