Spaces:
Runtime error
Runtime error
| import gradio as gr | |
| from tools import Inference, Matting, log, extract_matte, harmonize, css, live_matting_step | |
| from omegaconf import OmegaConf | |
| import os | |
| import sys | |
| import numpy as np | |
| import torchvision.transforms.functional as tf | |
| from PIL import Image | |
| import cv2 as cv | |
| import time | |
| import asyncio | |
| args = OmegaConf.load(os.path.join(f"./config/test.yaml")) | |
| log("Model loading") | |
| phnet = Inference(**args) | |
| stylematte = Matting(**args) | |
| log("Model loaded") | |
| async def show(queue): | |
| while True: | |
| log("SHOW FRAME") | |
| frame = queue.get() | |
| cv.imshow('Video', frame) | |
| await asyncio.sleep(0.01) | |
| async def main(queue): | |
| video = cv.VideoCapture(0) | |
| fps = 10 | |
| counter = 0 | |
| frame_count = 0 | |
| if not video.isOpened(): | |
| raise Exception('Video is not opened!') | |
| begin = time.time() | |
| for i in range(300): | |
| counter += 1 | |
| frame_count += 1 | |
| ret, frame = video.read() # Capture frame-by-frame | |
| inp = np.array(frame) | |
| back = np.zeros_like(frame) | |
| queue.put(inp) | |
| # res = asyncio.ensure_future( | |
| # live_matting_step(inp, back, stylematte)) | |
| # res = await live_matting_step(inp, back, stylematte) | |
| log(f"{i} await") | |
| end = time.time() | |
| log(f"frames: {frame_count}, time: {end - begin}, fps: {frame_count/(end - begin) }") | |
| if cv.waitKey(1) & 0xFF == ord('q'): | |
| break | |
| end = time.time() | |
| log(f"OVERALL TIME CONSUMED: {end - begin}, frames: {frame_count}, fps: {frame_count/(end - begin) }") | |
| # release the capture | |
| video.release() | |
| cv.destroyAllWindows() | |
| if __name__ == "__main__": | |
| queue = asyncio.Queue() | |
| loop = asyncio.get_event_loop() | |
| # asyncio.ensure_future(show(frame)) # Display the resulting frame | |
| loop.run_until_complete(main(queue)) | |
| loop.run_until_complete(show(queue)) | |
| loop.run_forever() | |