Spaces:
Build error
Build error
import os | |
import cv2 | |
from src.ss.ss import handle_ss | |
from src.sts.demo.sts import handle_sts | |
from src.ir.ir import handle_ir | |
from utils.utils import correct_rotation, create_folder | |
def gen_frames(video, dir_path, rotateCode): | |
subpath = create_folder(dir_path) | |
yield b'--frame\r\n' | |
count = 0 | |
while True: | |
ret, frame = video.read() | |
# if frame is read correctly ret is True | |
if rotateCode is not None: | |
frame = correct_rotation(frame, rotateCode) | |
if ret: | |
print('Read a new frame: ', ret) | |
img_path = os.path.join(subpath[0], "frames_%d.jpg" % count) | |
cv2.imwrite(img_path, frame) | |
segment_path, segment_array = handle_ss(img_path, subpath[1]) | |
output_path_box, output_path_text, output_path_visual, dict_box_sign_out, dict_rec_sign_out = handle_sts( | |
img_path, segment_path, subpath[2]) | |
predicted = handle_ir(img_path, dict_rec_sign_out, subpath[3]) | |
print(predicted) | |
else: | |
print("Can't receive frame (stream end?). Exiting ...") | |
break | |
count = count + 1 | |
ret, jpeg = cv2.imencode('.jpg', frame) | |
frame = jpeg.tobytes() | |
yield (b'--frame\r\n' | |
b'Content-Type: image/jpeg\r\n\r\n' + frame + b'\r\n\r\n') | |
def gen_videos(file_in, file_out): | |
cap = cv2.VideoCapture(file_in) | |
width = cap.get(cv2.cv.CV_CAP_PROP_FRAME_WIDTH) # float `width` | |
height = cap.get(cv2.cv.CV_CAP_PROP_FRAME_HEIGHT) | |
fps = cap.get(cv2.cv.CV_CAP_PROP_FPS) | |
print(width, height, fps) | |
# Define the codec and create VideoWriter object | |
fourcc = cv2.VideoWriter_fourcc(*'XVID') | |
out = cv2.VideoWriter(file_out, fourcc, 20.0, (640, 480)) | |
while cap.isOpened(): | |
ret, frame = cap.read() | |
if not ret: | |
print("Can't receive frame (stream end?). Exiting ...") | |
break | |
frame = cv2.flip(frame, 0) | |
# write the flipped frame | |
out.write(frame) | |
cv2.imshow('frame', frame) | |
if cv2.waitKey(1) == ord('q'): | |
break | |
# Release everything if job is finished | |
cap.release() | |
out.release() | |
cv2.destroyAllWindows() | |