I am working with image processing project with Python. I need a good GUI, so I have generated a GUI using PAGE. Now I have three .py files:
- PAGE generated GUI class file.
- PAGE generated GUI Support file.
- My image processing file.
PAGE generated GUI support file defines global veritable for storing GUI component values.
PAGE generated GUISupport.py:
#! /usr/bin/env python # # Support module generated by PAGE version 4.8.6 # In conjunction with Tcl version 8.6 # Nov 16, 2016 07:58:07 AM import sys try: from Tkinter import * except ImportError: from tkinter import * try: import ttk py3 = 0 except ImportError: import tkinter.ttk as ttk py3 = 1 global frm #this is the global variable frm=None def init(top, gui, *args, **kwargs): global w, top_level, root w = gui top_level = top root = top def destroy_window(): # Function which closes the window. global top_level top_level.destroy() top_level = None if __name__ == '__main__': import GUI GUI.vp_start_gui() PAGE generated GUI.py. I have added a show_frame() function separately. According to this information.
#! /usr/bin/env python # # GUI module generated by PAGE version 4.8.6 # In conjunction with Tcl version 8.6 # Nov 16, 2016 07:58:02 AM import sys import Tkinter as tk import Image, ImageTk try: from Tkinter import * except ImportError: from tkinter import * try: import ttk py3 = 0 except ImportError: import tkinter.ttk as ttk py3 = 1 import GUISupport def vp_start_gui(): '''Starting point when module is the main routine.''' global val, w, root root = Tk() top = MainForm (root) GUISupport.init(root, top) root.mainloop() w = None def create_MainForm(root, *args, **kwargs): '''Starting point when module is imported by another program.''' global w, w_win, rt rt = root w = Toplevel (root) top = MainForm (w) top.show_frame() GUISupport.init(w, top, *args, **kwargs) return (w, top) def destroy_MainForm(): global w w.destroy() w = None class MainForm: def __init__(self, top=None): '''This class configures and populates the toplevel window. top is the toplevel containing window.''' self._bgcolor = '#d9d9d9' # X11 color: 'gray85' self._fgcolor = '#000000' # X11 color: 'black' self._compcolor = '#d9d9d9' # X11 color: 'gray85' self._ana1color = '#d9d9d9' # X11 color: 'gray85' self._ana2color = '#d9d9d9' # X11 color: 'gray85' top.geometry("850x500+318+153") top.title("MainForm") top.configure(background="#d9d9d9") self.lblFrame = Label(top) self.lblFrame.place(relx=0.01, rely=0.02, height=471, width=764) self.lblFrame.configure(background="#d9d9d9") self.lblFrame.configure(disabledforeground="#a3a3a3") self.lblFrame.configure(foreground="#000000") self.lblFrame.configure(text='''Label''') self.lblFrame.configure(width=764) def show_frame(self): img = Image.fromarray(GUISupport.frm) imgtk = ImageTk.PhotoImage(image=img) self.lblFrame.imgtk = imgtk self.lblFrame.configure(image=imgtk) self.lblFrame.after(10, show_frame) if __name__ == '__main__': create_MainForm(Tk()) This is my image processing code written using OpenCV
import numpy as np import cv2 import GUISupport as guis cam=cv2.VideoCapture(0) while 1: _,f=cam.read() cv2.imshow('frame',f) guis.frm=cv2.cvtColor(f, cv2.COLOR_BGR2RGBA) #this is the variable passed using GUISupport.py if cv2.waitKey(1) & 0xFF == ord('q'): cv2.destroyAllWindows() cam.release() break I have run this code. But, I got this error:
File "C:\Users\user\Documents\Visual Studio 2013\Projects\testforCAmFeed\testforCAmFeed\GUI.py", line 74, in show_frame img = Image.fromarray(GUISupport.frm) AttributeError: class Image has no attribute 'fromarray' I need to pass my video and other variable to the GUI module and need to pass tkinter GUI controller data to image processing module.
How to do this?