2019-08-13 20:54:17 +00:00
|
|
|
import PySimpleGUI as sg
|
|
|
|
import cv2
|
|
|
|
|
|
|
|
"""
|
|
|
|
Demo of using OpenCV to show your webcam in a GUI window.
|
|
|
|
This demo will run on tkinter, Qt, and Web(Remi). The web version flickers at the moment though
|
|
|
|
To exit, right click and choose exit. If on Qt, you'll have to kill the program as there are no right click menus
|
|
|
|
in PySimpleGUIQt (yet).
|
|
|
|
"""
|
|
|
|
|
2019-10-23 20:10:03 +00:00
|
|
|
sg.change_look_and_feel('Black')
|
2019-08-13 20:54:17 +00:00
|
|
|
|
|
|
|
# define the window layout
|
2019-10-23 20:10:03 +00:00
|
|
|
layout = [[sg.Image(filename='', key='-IMAGE-', tooltip='Right click for exit menu')],]
|
2019-08-13 20:54:17 +00:00
|
|
|
|
|
|
|
# create the window and show it without the plot
|
|
|
|
window = sg.Window('Demo Application - OpenCV Integration', layout, location=(800,400),
|
|
|
|
no_titlebar=True, grab_anywhere=True,
|
|
|
|
right_click_menu=['&Right', ['E&xit']], ) # if trying Qt, you will need to remove this right click menu
|
|
|
|
|
|
|
|
# ---===--- Event LOOP Read and display frames, operate the GUI --- #
|
|
|
|
cap = cv2.VideoCapture(0) # Setup the OpenCV capture device (webcam)
|
|
|
|
while True:
|
2019-10-23 20:10:03 +00:00
|
|
|
event, values = window.read(timeout=20)
|
2019-08-13 20:54:17 +00:00
|
|
|
if event in ('Exit', None):
|
|
|
|
break
|
|
|
|
ret, frame = cap.read() # Read image from capture device (camera)
|
|
|
|
imgbytes=cv2.imencode('.png', frame)[1].tobytes() # Convert the image to PNG Bytes
|
2019-10-23 20:10:03 +00:00
|
|
|
window['-IMAGE-'].update(data=imgbytes) # Change the Image Element to show the new image
|
|
|
|
|
|
|
|
window.close()
|