python 3.x tkinter, integrating frames from opencv cv2 into tkinter window

I have a question, how do I integrate tkinter with cv2, I mean I can create a tkinter window filled with objects and I can open my laptop camera in a frame, but I want to integrate this "frame" from openCV cv2 into the tkinter window, next to the other objects, How do I do that?

I am using, Python 3.4, OpenCV, Numpy, Scipy, Windows 8

here is my code

import time, serial, sys, os, cv2
import tkinter as tk
from tkinter import *
from cv2 import *
from scipy import *
from numpy import array
from tkinter import ttk
try:
 import Tkinter
 import ttk
except ImportError:
 import tkinter as Tkinter
 import tkinter.ttk as ttk

mGui = Tk()
mGui.geometry('120x67+0+0') 
mGui.configure(background="Sky Blue")
cap = cv2.VideoCapture(0)
ret, frame = cap.read()
cv2.imshow("Camera's View", frame)
mGui.mainloop()

thanks

Upvotes: 2

Views: 1936

Answers (1)

I understand now, if you too pull me up

I have to

  1. create a frame
  2. create a label inside of the frame
  3. take the camera's view and convert it into an image
  4. read the image and assigned to a variable
  5. create a new property for the label (image)
  6. assign the red image to the property
  7. configure the label to display the image

so clear now, so obvious

here is the code (include previous libraries)

from PIL import Image, ImageTk (add library)
mGui = Tk()
mGui.geometry('600x600+0+0')
mGui.configure(background="Sky Blue")

fframe = Frame(mGui, width=500, height=500)
fframe.place(x=50, y=50)

cap = cv2.VideoCapture(0)
ret, frame = cap.read()

v1 = Label(fframe, text="fchgvjvjhb")
v1.place(x=0, y=10)
v2 = Label(fframe, text="ajajajaja")
v2.place(x=300, y=10)

def dddd():
 ret, frame = cap.read()

 img = Image.fromarray(frame)
 nimg = ImageTk.PhotoImage(image=img)

 v1.n_img = nimg
 v1.configure(image=nimg)


 gray = cv2.cvtColor(frame,cv2.COLOR_BGR2GRAY)
 gimg = Image.fromarray(gray)
 gnimg = ImageTk.PhotoImage(image=gimg)

 v2.ng_img = gnimg
 v2.configure(image=gnimg)
 mGui.after(10, dddd)    

dddd()
mGui.mainloop()

Upvotes: 1

Related Questions