Как сохранить видео, записанное в imageio из кадров, используя tkinter GUI - PullRequest
0 голосов
/ 28 апреля 2020

Я пытаюсь сохранить видео, снятое с моей веб-камеры, с помощью imageio. Я хочу, чтобы веб-камера начала снимать, когда я нажимаю кнопку «Пуск», и останавливать запись / закрывать окно, когда я нажимаю кнопку «Стоп», и сохранять файл. Я не совсем знаком с imageio - я не могу понять аспект сохранения или почему веб-камера не открывается. Любая помощь приветствуется!

import imageio
import visvis as vv
from imageio import get_writer
import multiprocessing
import tkinter as tk
import numpy as np

writer = imageio.get_writer('/home/hj223/Documents/0222_video_recordings/some_file.mp4', 
fps=30, codec='h264_vaapi')

e = multiprocessing.Event()
p = None

def record(e):
while e.is_set():
    reader = imageio.get_reader('<video0>')
    t = vv.imshow(reader.get_next_data(), clim=(0, 255))

    for im in reader:
        vv.processEvents()
        t.SetData(im)
        imageio.get_writer(im)

def start_recording_proc():
global p
p = multiprocessing.Process(target=record, args=(e,))
p.start()

def stop_record():
writer.close()
e.set()
p.join()

root.quit()
root.destroy()

if __name__ == "__main__":
# -------configure window
root = tk.Tk()
root.geometry("%dx%d+0+0" % (200, 200))
startbutton=tk.Button(root,width=10,height=1,text='START',command=start_recording_proc)
stopbutton=tk.Button(root,width=10,height=1,text='STOP', command=stop_record)
startbutton.pack()
stopbutton.pack()

# -------begin
root.mainloop()
...